bio-svgenes 0.2.3 → 0.3.0

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.
Files changed (59) hide show
  1. data/.DS_Store +0 -0
  2. data/VERSION +1 -1
  3. data/bio-svgenes.gemspec +59 -4
  4. data/doc/.DS_Store +0 -0
  5. data/doc/Bio.html +141 -0
  6. data/doc/Bio/.DS_Store +0 -0
  7. data/doc/Bio/Graphics.html +147 -0
  8. data/doc/Bio/Graphics/Glyph.html +1061 -0
  9. data/doc/Bio/Graphics/MiniFeature.html +342 -0
  10. data/doc/Bio/Graphics/Page.html +1200 -0
  11. data/doc/Bio/Graphics/Primitive.html +278 -0
  12. data/doc/Bio/Graphics/SVGEE.html +471 -0
  13. data/doc/Bio/Graphics/Track.html +506 -0
  14. data/doc/LICENSE_txt.html +118 -0
  15. data/doc/created.rid +9 -0
  16. data/doc/images/add.png +0 -0
  17. data/doc/images/arrow_up.png +0 -0
  18. data/doc/images/brick.png +0 -0
  19. data/doc/images/brick_link.png +0 -0
  20. data/doc/images/bug.png +0 -0
  21. data/doc/images/bullet_black.png +0 -0
  22. data/doc/images/bullet_toggle_minus.png +0 -0
  23. data/doc/images/bullet_toggle_plus.png +0 -0
  24. data/doc/images/date.png +0 -0
  25. data/doc/images/delete.png +0 -0
  26. data/doc/images/find.png +0 -0
  27. data/doc/images/loadingAnimation.gif +0 -0
  28. data/doc/images/macFFBgHack.png +0 -0
  29. data/doc/images/package.png +0 -0
  30. data/doc/images/page_green.png +0 -0
  31. data/doc/images/page_white_text.png +0 -0
  32. data/doc/images/page_white_width.png +0 -0
  33. data/doc/images/plugin.png +0 -0
  34. data/doc/images/ruby.png +0 -0
  35. data/doc/images/tag_blue.png +0 -0
  36. data/doc/images/tag_green.png +0 -0
  37. data/doc/images/transparent.png +0 -0
  38. data/doc/images/wrench.png +0 -0
  39. data/doc/images/wrench_orange.png +0 -0
  40. data/doc/images/zoom.png +0 -0
  41. data/doc/index.html +94 -0
  42. data/doc/js/darkfish.js +155 -0
  43. data/doc/js/jquery.js +18 -0
  44. data/doc/js/navigation.js +142 -0
  45. data/doc/js/search.js +94 -0
  46. data/doc/js/search_index.js +1 -0
  47. data/doc/js/searcher.js +228 -0
  48. data/doc/rdoc.css +595 -0
  49. data/doc/table_of_contents.html +162 -0
  50. data/test/gene.gff +4 -0
  51. data/test/json_config.json +17 -0
  52. data/test/test_glyph.rb +33 -0
  53. data/test/test_mini_feature.rb +37 -0
  54. data/test/test_page.rb +127 -0
  55. data/test/test_primitive.rb +45 -0
  56. data/test/test_svgee.rb +73 -0
  57. data/test/test_track.rb +53 -0
  58. data/test/test_transcripts.gff +4 -0
  59. metadata +94 -14
@@ -0,0 +1,342 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
6
+
7
+ <title>class Bio::Graphics::MiniFeature - RDoc Documentation</title>
8
+
9
+ <link type="text/css" media="screen" href="../../rdoc.css" rel="stylesheet">
10
+
11
+ <script type="text/javascript">
12
+ var rdoc_rel_prefix = "../../";
13
+ </script>
14
+
15
+ <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
16
+ <script type="text/javascript" charset="utf-8" src="../../js/navigation.js"></script>
17
+ <script type="text/javascript" charset="utf-8" src="../../js/search_index.js"></script>
18
+ <script type="text/javascript" charset="utf-8" src="../../js/search.js"></script>
19
+ <script type="text/javascript" charset="utf-8" src="../../js/searcher.js"></script>
20
+ <script type="text/javascript" charset="utf-8" src="../../js/darkfish.js"></script>
21
+
22
+
23
+ <body id="top" class="class">
24
+ <nav id="metadata">
25
+ <nav id="home-section" class="section">
26
+ <h3 class="section-header">
27
+ <a href="../../index.html">Home</a>
28
+ <a href="../../table_of_contents.html#classes">Classes</a>
29
+ <a href="../../table_of_contents.html#methods">Methods</a>
30
+ </h3>
31
+ </nav>
32
+
33
+
34
+ <nav id="search-section" class="section project-section" class="initially-hidden">
35
+ <form action="#" method="get" accept-charset="utf-8">
36
+ <h3 class="section-header">
37
+ <input type="text" name="search" placeholder="Search" id="search-field"
38
+ title="Type to search, Up and Down to navigate, Enter to load">
39
+ </h3>
40
+ </form>
41
+
42
+ <ul id="search-results" class="initially-hidden"></ul>
43
+ </nav>
44
+
45
+
46
+
47
+
48
+ <div id="file-metadata">
49
+ <nav id="file-list-section" class="section">
50
+ <h3 class="section-header">Defined In</h3>
51
+ <ul>
52
+ <li>lib/bio/graphics/mini_feature.rb
53
+ </ul>
54
+ </nav>
55
+
56
+
57
+ </div>
58
+
59
+ <div id="class-metadata">
60
+
61
+ <nav id="parent-class-section" class="section">
62
+ <h3 class="section-header">Parent</h3>
63
+
64
+ <p class="link">Object
65
+
66
+ </nav>
67
+
68
+
69
+
70
+ <!-- Method Quickref -->
71
+ <nav id="method-list-section" class="section">
72
+ <h3 class="section-header">Methods</h3>
73
+
74
+ <ul class="link-list">
75
+
76
+ <li ><a href="#method-c-new">::new</a>
77
+
78
+ </ul>
79
+ </nav>
80
+
81
+ </div>
82
+
83
+ <div id="project-metadata">
84
+ <nav id="fileindex-section" class="section project-section">
85
+ <h3 class="section-header">Pages</h3>
86
+
87
+ <ul>
88
+
89
+ <li class="file"><a href="../../LICENSE_txt.html">LICENSE</a>
90
+
91
+ </ul>
92
+ </nav>
93
+
94
+ <nav id="classindex-section" class="section project-section">
95
+ <h3 class="section-header">Class and Module Index</h3>
96
+
97
+ <ul class="link-list">
98
+
99
+ <li><a href="../../Bio.html">Bio</a>
100
+
101
+ <li><a href="../../Bio/Graphics.html">Bio::Graphics</a>
102
+
103
+ <li><a href="../../Bio/Graphics/Glyph.html">Bio::Graphics::Glyph</a>
104
+
105
+ <li><a href="../../Bio/Graphics/MiniFeature.html">Bio::Graphics::MiniFeature</a>
106
+
107
+ <li><a href="../../Bio/Graphics/Page.html">Bio::Graphics::Page</a>
108
+
109
+ <li><a href="../../Bio/Graphics/Primitive.html">Bio::Graphics::Primitive</a>
110
+
111
+ <li><a href="../../Bio/Graphics/SVGEE.html">Bio::Graphics::SVGEE</a>
112
+
113
+ <li><a href="../../Bio/Graphics/Track.html">Bio::Graphics::Track</a>
114
+
115
+ </ul>
116
+ </nav>
117
+
118
+ </div>
119
+ </nav>
120
+
121
+ <div id="documentation">
122
+ <h1 class="class">class Bio::Graphics::MiniFeature</h1>
123
+
124
+ <div id="description" class="description">
125
+
126
+ <p>The <a href="MiniFeature.html">MiniFeature</a> class represents any feature
127
+ (e.g. a gene, transcript, exon, start codon, etc) on a track.</p>
128
+
129
+ </div><!-- description -->
130
+
131
+
132
+
133
+
134
+ <section id="5Buntitled-5D" class="documentation-section">
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+ <!-- Attributes -->
143
+ <section id="attribute-method-details" class="method-section section">
144
+ <h3 class="section-header">Attributes</h3>
145
+
146
+
147
+ <div id="attribute-i-block_gaps" class="method-detail">
148
+ <div class="method-heading attribute-method-heading">
149
+ <span class="method-name">block_gaps</span><span
150
+ class="attribute-access-type">[RW]</span>
151
+ </div>
152
+
153
+ <div class="method-description">
154
+
155
+
156
+
157
+ </div>
158
+ </div>
159
+
160
+ <div id="attribute-i-end" class="method-detail">
161
+ <div class="method-heading attribute-method-heading">
162
+ <span class="method-name">end</span><span
163
+ class="attribute-access-type">[RW]</span>
164
+ </div>
165
+
166
+ <div class="method-description">
167
+
168
+
169
+
170
+ </div>
171
+ </div>
172
+
173
+ <div id="attribute-i-exons" class="method-detail">
174
+ <div class="method-heading attribute-method-heading">
175
+ <span class="method-name">exons</span><span
176
+ class="attribute-access-type">[RW]</span>
177
+ </div>
178
+
179
+ <div class="method-description">
180
+
181
+
182
+
183
+ </div>
184
+ </div>
185
+
186
+ <div id="attribute-i-id" class="method-detail">
187
+ <div class="method-heading attribute-method-heading">
188
+ <span class="method-name">id</span><span
189
+ class="attribute-access-type">[RW]</span>
190
+ </div>
191
+
192
+ <div class="method-description">
193
+
194
+
195
+
196
+ </div>
197
+ </div>
198
+
199
+ <div id="attribute-i-segment_height" class="method-detail">
200
+ <div class="method-heading attribute-method-heading">
201
+ <span class="method-name">segment_height</span><span
202
+ class="attribute-access-type">[RW]</span>
203
+ </div>
204
+
205
+ <div class="method-description">
206
+
207
+
208
+
209
+ </div>
210
+ </div>
211
+
212
+ <div id="attribute-i-start" class="method-detail">
213
+ <div class="method-heading attribute-method-heading">
214
+ <span class="method-name">start</span><span
215
+ class="attribute-access-type">[RW]</span>
216
+ </div>
217
+
218
+ <div class="method-description">
219
+
220
+
221
+
222
+ </div>
223
+ </div>
224
+
225
+ <div id="attribute-i-strand" class="method-detail">
226
+ <div class="method-heading attribute-method-heading">
227
+ <span class="method-name">strand</span><span
228
+ class="attribute-access-type">[RW]</span>
229
+ </div>
230
+
231
+ <div class="method-description">
232
+
233
+
234
+
235
+ </div>
236
+ </div>
237
+
238
+ <div id="attribute-i-utrs" class="method-detail">
239
+ <div class="method-heading attribute-method-heading">
240
+ <span class="method-name">utrs</span><span
241
+ class="attribute-access-type">[RW]</span>
242
+ </div>
243
+
244
+ <div class="method-description">
245
+
246
+
247
+
248
+ </div>
249
+ </div>
250
+
251
+ </section><!-- attribute-method-details -->
252
+
253
+
254
+ <!-- Methods -->
255
+
256
+ <section id="public-class-5Buntitled-5D-method-details" class="method-section section">
257
+ <h3 class="section-header">Public Class Methods</h3>
258
+
259
+
260
+ <div id="method-c-new" class="method-detail ">
261
+
262
+ <div class="method-heading">
263
+ <span class="method-name">new</span><span
264
+ class="method-args">(args)</span>
265
+
266
+ <span class="method-click-advice">click to toggle source</span>
267
+
268
+ </div>
269
+
270
+
271
+ <div class="method-description">
272
+
273
+ <p>Creates a new <a href="MiniFeature.html">MiniFeature</a></p>
274
+
275
+ <p><em>Arguments</em></p>
276
+ <ul><li>
277
+ <p>start = the start position of the feature</p>
278
+ </li><li>
279
+ <p>end = the end position of the feature</p>
280
+ </li><li>
281
+ <p>strand = the strand of the feature</p>
282
+ </li><li>
283
+ <p>exons = an array of exon positions</p>
284
+ </li><li>
285
+ <p>utrs = an array of utrs positions</p>
286
+ </li><li>
287
+ <p>block_gaps = an array of regions with nothing to be drawn, e.g. introns</p>
288
+ </li><li>
289
+ <p>id = the name of the feature such as the gene name or transcript ID</p>
290
+ </li><li>
291
+ <p>segment_height = the height of the current feature</p>
292
+ </li></ul>
293
+
294
+ <h2 id="method-c-new-label-Example+usage">Example usage<span><a href="#method-c-new-label-Example+usage">&para;</a> <a href="#documentation">&uarr;</a></span></h2>
295
+
296
+ <pre class="ruby"><span class="ruby-ivar">@mini1</span> = <span class="ruby-constant">Bio</span><span class="ruby-operator">::</span><span class="ruby-constant">Graphics</span><span class="ruby-operator">::</span><span class="ruby-constant">MiniFeature</span>.<span class="ruby-identifier">new</span>(:<span class="ruby-identifier">start=</span><span class="ruby-operator">&gt;</span><span class="ruby-value">3631</span>, :<span class="ruby-keyword">end</span>=<span class="ruby-operator">&gt;</span><span class="ruby-value">5899</span>, :<span class="ruby-identifier">strand=</span><span class="ruby-operator">&gt;</span><span class="ruby-string">'+'</span>,
297
+ :<span class="ruby-identifier">exons=</span><span class="ruby-operator">&gt;</span>[<span class="ruby-value">4000</span>, <span class="ruby-value">4500</span>, <span class="ruby-value">4700</span>, <span class="ruby-value">5000</span>], :<span class="ruby-identifier">utrs=</span><span class="ruby-operator">&gt;</span>[<span class="ruby-value">3631</span>, <span class="ruby-value">3650</span>], :<span class="ruby-identifier">segment_height=</span><span class="ruby-operator">&gt;</span><span class="ruby-value">5</span>, :<span class="ruby-identifier">id=</span><span class="ruby-operator">&gt;</span><span class="ruby-string">&quot;AT1G01010&quot;</span>)
298
+ </pre>
299
+
300
+ <h3 id="method-c-new-label-MiniFeatures+and+Tracks">MiniFeatures and Tracks<span><a href="#method-c-new-label-MiniFeatures+and+Tracks">&para;</a> <a href="#documentation">&uarr;</a></span></h3>
301
+
302
+ <p>MiniFeatures are added to <a href="Track.html">Track</a> objects, with
303
+ overlapping MiniFeatures being placed onto separate rows</p>
304
+
305
+
306
+
307
+
308
+ <div class="method-source-code" id="new-source">
309
+ <pre><span class="ruby-comment"># File lib/bio/graphics/mini_feature.rb, line 28</span>
310
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">args</span>)
311
+ <span class="ruby-ivar">@start</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">:start</span>]
312
+ <span class="ruby-ivar">@end</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">:end</span>]
313
+ <span class="ruby-ivar">@strand</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">:strand</span>]
314
+ <span class="ruby-ivar">@exons</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">:exons</span>] <span class="ruby-operator">||</span> []
315
+ <span class="ruby-ivar">@utrs</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">:utrs</span>] <span class="ruby-operator">||</span> [] <span class="ruby-comment">#start, ennd, strand, arg[:exons], arg[:utrs]</span>
316
+ <span class="ruby-ivar">@block_gaps</span> = []
317
+ <span class="ruby-ivar">@id</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">:id</span>]
318
+ <span class="ruby-ivar">@segment_height</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">:segment_height</span>]
319
+ <span class="ruby-keyword">end</span></pre>
320
+ </div><!-- new-source -->
321
+
322
+ </div>
323
+
324
+
325
+
326
+
327
+ </div><!-- new-method -->
328
+
329
+
330
+ </section><!-- public-class-method-details -->
331
+
332
+ </section><!-- 5Buntitled-5D -->
333
+
334
+ </div><!-- documentation -->
335
+
336
+
337
+ <footer id="validator-badges">
338
+ <p><a href="http://validator.w3.org/check/referer">[Validate]</a>
339
+ <p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 4.0.0.rc.2.1.
340
+ <p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
341
+ </footer>
342
+
@@ -0,0 +1,1200 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
6
+
7
+ <title>class Bio::Graphics::Page - RDoc Documentation</title>
8
+
9
+ <link type="text/css" media="screen" href="../../rdoc.css" rel="stylesheet">
10
+
11
+ <script type="text/javascript">
12
+ var rdoc_rel_prefix = "../../";
13
+ </script>
14
+
15
+ <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
16
+ <script type="text/javascript" charset="utf-8" src="../../js/navigation.js"></script>
17
+ <script type="text/javascript" charset="utf-8" src="../../js/search_index.js"></script>
18
+ <script type="text/javascript" charset="utf-8" src="../../js/search.js"></script>
19
+ <script type="text/javascript" charset="utf-8" src="../../js/searcher.js"></script>
20
+ <script type="text/javascript" charset="utf-8" src="../../js/darkfish.js"></script>
21
+
22
+
23
+ <body id="top" class="class">
24
+ <nav id="metadata">
25
+ <nav id="home-section" class="section">
26
+ <h3 class="section-header">
27
+ <a href="../../index.html">Home</a>
28
+ <a href="../../table_of_contents.html#classes">Classes</a>
29
+ <a href="../../table_of_contents.html#methods">Methods</a>
30
+ </h3>
31
+ </nav>
32
+
33
+
34
+ <nav id="search-section" class="section project-section" class="initially-hidden">
35
+ <form action="#" method="get" accept-charset="utf-8">
36
+ <h3 class="section-header">
37
+ <input type="text" name="search" placeholder="Search" id="search-field"
38
+ title="Type to search, Up and Down to navigate, Enter to load">
39
+ </h3>
40
+ </form>
41
+
42
+ <ul id="search-results" class="initially-hidden"></ul>
43
+ </nav>
44
+
45
+
46
+
47
+
48
+ <div id="file-metadata">
49
+ <nav id="file-list-section" class="section">
50
+ <h3 class="section-header">Defined In</h3>
51
+ <ul>
52
+ <li>lib/bio/graphics/page.rb
53
+ </ul>
54
+ </nav>
55
+
56
+
57
+ </div>
58
+
59
+ <div id="class-metadata">
60
+
61
+ <nav id="parent-class-section" class="section">
62
+ <h3 class="section-header">Parent</h3>
63
+
64
+ <p class="link">Object
65
+
66
+ </nav>
67
+
68
+
69
+
70
+ <!-- Method Quickref -->
71
+ <nav id="method-list-section" class="section">
72
+ <h3 class="section-header">Methods</h3>
73
+
74
+ <ul class="link-list">
75
+
76
+ <li ><a href="#method-c-from_json">::from_json</a>
77
+
78
+ <li ><a href="#method-c-new">::new</a>
79
+
80
+ <li ><a href="#method-c-parse_gff">::parse_gff</a>
81
+
82
+ <li ><a href="#method-i-add_track">#add_track</a>
83
+
84
+ <li ><a href="#method-i-draw">#draw</a>
85
+
86
+ <li ><a href="#method-i-draw_circle">#draw_circle</a>
87
+
88
+ <li ><a href="#method-i-draw_directed">#draw_directed</a>
89
+
90
+ <li ><a href="#method-i-draw_down_triangle">#draw_down_triangle</a>
91
+
92
+ <li ><a href="#method-i-draw_features">#draw_features</a>
93
+
94
+ <li ><a href="#method-i-draw_generic">#draw_generic</a>
95
+
96
+ <li ><a href="#method-i-draw_histogram">#draw_histogram</a>
97
+
98
+ <li ><a href="#method-i-draw_label">#draw_label</a>
99
+
100
+ <li ><a href="#method-i-draw_scale">#draw_scale</a>
101
+
102
+ <li ><a href="#method-i-draw_span">#draw_span</a>
103
+
104
+ <li ><a href="#method-i-draw_transcript">#draw_transcript</a>
105
+
106
+ <li ><a href="#method-i-draw_up_triangle">#draw_up_triangle</a>
107
+
108
+ <li ><a href="#method-i-get_limits">#get_limits</a>
109
+
110
+ <li ><a href="#method-i-get_markup">#get_markup</a>
111
+
112
+ <li ><a href="#method-i-to_px">#to_px</a>
113
+
114
+ <li ><a href="#method-i-write">#write</a>
115
+
116
+ </ul>
117
+ </nav>
118
+
119
+ </div>
120
+
121
+ <div id="project-metadata">
122
+ <nav id="fileindex-section" class="section project-section">
123
+ <h3 class="section-header">Pages</h3>
124
+
125
+ <ul>
126
+
127
+ <li class="file"><a href="../../LICENSE_txt.html">LICENSE</a>
128
+
129
+ </ul>
130
+ </nav>
131
+
132
+ <nav id="classindex-section" class="section project-section">
133
+ <h3 class="section-header">Class and Module Index</h3>
134
+
135
+ <ul class="link-list">
136
+
137
+ <li><a href="../../Bio.html">Bio</a>
138
+
139
+ <li><a href="../../Bio/Graphics.html">Bio::Graphics</a>
140
+
141
+ <li><a href="../../Bio/Graphics/Glyph.html">Bio::Graphics::Glyph</a>
142
+
143
+ <li><a href="../../Bio/Graphics/MiniFeature.html">Bio::Graphics::MiniFeature</a>
144
+
145
+ <li><a href="../../Bio/Graphics/Page.html">Bio::Graphics::Page</a>
146
+
147
+ <li><a href="../../Bio/Graphics/Primitive.html">Bio::Graphics::Primitive</a>
148
+
149
+ <li><a href="../../Bio/Graphics/SVGEE.html">Bio::Graphics::SVGEE</a>
150
+
151
+ <li><a href="../../Bio/Graphics/Track.html">Bio::Graphics::Track</a>
152
+
153
+ </ul>
154
+ </nav>
155
+
156
+ </div>
157
+ </nav>
158
+
159
+ <div id="documentation">
160
+ <h1 class="class">class Bio::Graphics::Page</h1>
161
+
162
+ <div id="description" class="description">
163
+
164
+ <p>The <a href="Page.html">Page</a> class represents the top level container
165
+ on which svg objects are written. It will contain a scale and all the
166
+ tracks along with their features. The scale will start at the genomic
167
+ co-ordinates of the start of the first feature and stop at the end of the
168
+ last feature)</p>
169
+
170
+ </div><!-- description -->
171
+
172
+
173
+
174
+
175
+ <section id="5Buntitled-5D" class="documentation-section">
176
+
177
+
178
+
179
+
180
+
181
+
182
+
183
+
184
+ <!-- Methods -->
185
+
186
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section section">
187
+ <h3 class="section-header">Public Instance Methods</h3>
188
+
189
+
190
+ <div id="method-i-add_track" class="method-detail ">
191
+
192
+ <div class="method-heading">
193
+ <span class="method-name">add_track</span><span
194
+ class="method-args">(args)</span>
195
+
196
+ <span class="method-click-advice">click to toggle source</span>
197
+
198
+ </div>
199
+
200
+
201
+ <div class="method-description">
202
+
203
+ <p>Calculates the colour or gradient for the supplied <a
204
+ href="Track.html">Bio::Graphics::Track</a> objects and adds them to the <a
205
+ href="Track.html">Track</a> array for the current <a
206
+ href="Page.html">Page</a></p>
207
+ <ul><li>
208
+ <p><code>args</code> - an Array of <a
209
+ href="Track.html">Bio::Graphics::Track</a> objects</p>
210
+ </li><li>
211
+ <p><code>returns</code> - the last element of the <a
212
+ href="Track.html">Track</a> array</p>
213
+ </li></ul>
214
+
215
+
216
+
217
+
218
+ <div class="method-source-code" id="add_track-source">
219
+ <pre><span class="ruby-comment"># File lib/bio/graphics/page.rb, line 138</span>
220
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">add_track</span>(<span class="ruby-identifier">args</span>)
221
+ <span class="ruby-comment">#sort out the colour/gradient options</span>
222
+ [<span class="ruby-value">:fill_color</span>, <span class="ruby-value">:exon_fill_color</span>, <span class="ruby-value">:utr_fill_color</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">colour_tag</span><span class="ruby-operator">|</span>
223
+ <span class="ruby-keyword">if</span> <span class="ruby-constant">Glyph</span>.<span class="ruby-identifier">gradients</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">args</span>[<span class="ruby-identifier">colour_tag</span>])
224
+ <span class="ruby-ivar">@svg</span>.<span class="ruby-identifier">gradient</span>(<span class="ruby-constant">Glyph</span>.<span class="ruby-identifier">gradient</span>(<span class="ruby-identifier">args</span>[<span class="ruby-identifier">colour_tag</span>]))
225
+ <span class="ruby-identifier">args</span>[<span class="ruby-identifier">colour_tag</span>] = <span class="ruby-node">&quot;url(##{args[colour_tag]})&quot;</span>
226
+ <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">args</span>[<span class="ruby-identifier">colour_tag</span>].<span class="ruby-identifier">instance_of?</span>(<span class="ruby-constant">Hash</span>)
227
+ <span class="ruby-ivar">@svg</span>.<span class="ruby-identifier">gradient</span>(<span class="ruby-identifier">args</span>[<span class="ruby-identifier">colour_tag</span>])
228
+ <span class="ruby-identifier">args</span>[<span class="ruby-identifier">colour_tag</span>] = <span class="ruby-node">&quot;url(##{args[colour_tag][:id]})&quot;</span>
229
+ <span class="ruby-keyword">end</span>
230
+ <span class="ruby-keyword">end</span>
231
+ <span class="ruby-ivar">@tracks</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">Track</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">args</span>)
232
+ <span class="ruby-keyword">return</span> <span class="ruby-ivar">@tracks</span>.<span class="ruby-identifier">last</span>
233
+ <span class="ruby-keyword">end</span></pre>
234
+ </div><!-- add_track-source -->
235
+
236
+ </div>
237
+
238
+
239
+
240
+
241
+ </div><!-- add_track-method -->
242
+
243
+
244
+ <div id="method-i-draw" class="method-detail ">
245
+
246
+ <div class="method-heading">
247
+ <span class="method-name">draw</span><span
248
+ class="method-args">()</span>
249
+
250
+ <span class="method-click-advice">click to toggle source</span>
251
+
252
+ </div>
253
+
254
+
255
+ <div class="method-description">
256
+
257
+ <p>Prints out the svg text</p>
258
+
259
+
260
+
261
+
262
+ <div class="method-source-code" id="draw-source">
263
+ <pre><span class="ruby-comment"># File lib/bio/graphics/page.rb, line 332</span>
264
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">draw</span>
265
+ <span class="ruby-identifier">puts</span> <span class="ruby-identifier">get_markup</span>
266
+ <span class="ruby-keyword">end</span></pre>
267
+ </div><!-- draw-source -->
268
+
269
+ </div>
270
+
271
+
272
+
273
+
274
+ </div><!-- draw-method -->
275
+
276
+
277
+ <div id="method-i-draw_circle" class="method-detail ">
278
+
279
+ <div class="method-heading">
280
+ <span class="method-name">draw_circle</span><span
281
+ class="method-args">(args)</span>
282
+
283
+ <span class="method-click-advice">click to toggle source</span>
284
+
285
+ </div>
286
+
287
+
288
+ <div class="method-description">
289
+
290
+ <p>Adds the <a href="Primitive.html">Bio::Graphics::Primitive</a> objects to
291
+ the <a href="SVGEE.html">SVGEE</a> object</p>
292
+ <ul><li>
293
+ <p><code>args</code> - an Array of <a
294
+ href="Primitive.html">Bio::Graphics::Primitive</a> objects of the stated
295
+ type</p>
296
+ </li></ul>
297
+
298
+
299
+
300
+
301
+ <div class="method-source-code" id="draw_circle-source">
302
+ <pre><span class="ruby-comment"># File lib/bio/graphics/page.rb, line 189</span>
303
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">draw_circle</span>(<span class="ruby-identifier">args</span>)
304
+ <span class="ruby-constant">Glyph</span>.<span class="ruby-identifier">circle</span>(<span class="ruby-identifier">args</span>).<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">g</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@svg</span>.<span class="ruby-identifier">add_primitive</span>(<span class="ruby-identifier">g</span>) }
305
+ <span class="ruby-keyword">end</span></pre>
306
+ </div><!-- draw_circle-source -->
307
+
308
+ </div>
309
+
310
+
311
+
312
+
313
+ </div><!-- draw_circle-method -->
314
+
315
+
316
+ <div id="method-i-draw_directed" class="method-detail ">
317
+
318
+ <div class="method-heading">
319
+ <span class="method-name">draw_directed</span><span
320
+ class="method-args">(args)</span>
321
+
322
+ <span class="method-click-advice">click to toggle source</span>
323
+
324
+ </div>
325
+
326
+
327
+ <div class="method-description">
328
+
329
+ <p>Adds the <a href="Primitive.html">Bio::Graphics::Primitive</a> objects to
330
+ the <a href="SVGEE.html">SVGEE</a> object</p>
331
+ <ul><li>
332
+ <p><code>args</code> - an Array of <a
333
+ href="Primitive.html">Bio::Graphics::Primitive</a> objects of the stated
334
+ type</p>
335
+ </li></ul>
336
+
337
+
338
+
339
+
340
+ <div class="method-source-code" id="draw_directed-source">
341
+ <pre><span class="ruby-comment"># File lib/bio/graphics/page.rb, line 184</span>
342
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">draw_directed</span>(<span class="ruby-identifier">args</span>)
343
+ <span class="ruby-constant">Glyph</span>.<span class="ruby-identifier">directed</span>(<span class="ruby-identifier">args</span>).<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">g</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@svg</span>.<span class="ruby-identifier">add_primitive</span>(<span class="ruby-identifier">g</span>) }
344
+ <span class="ruby-keyword">end</span></pre>
345
+ </div><!-- draw_directed-source -->
346
+
347
+ </div>
348
+
349
+
350
+
351
+
352
+ </div><!-- draw_directed-method -->
353
+
354
+
355
+ <div id="method-i-draw_down_triangle" class="method-detail ">
356
+
357
+ <div class="method-heading">
358
+ <span class="method-name">draw_down_triangle</span><span
359
+ class="method-args">(args)</span>
360
+
361
+ <span class="method-click-advice">click to toggle source</span>
362
+
363
+ </div>
364
+
365
+
366
+ <div class="method-description">
367
+
368
+ <p>Adds the <a href="Primitive.html">Bio::Graphics::Primitive</a> objects to
369
+ the <a href="SVGEE.html">SVGEE</a> object</p>
370
+ <ul><li>
371
+ <p><code>args</code> - an Array of <a
372
+ href="Primitive.html">Bio::Graphics::Primitive</a> objects of the stated
373
+ type</p>
374
+ </li></ul>
375
+
376
+
377
+
378
+
379
+ <div class="method-source-code" id="draw_down_triangle-source">
380
+ <pre><span class="ruby-comment"># File lib/bio/graphics/page.rb, line 209</span>
381
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">draw_down_triangle</span>(<span class="ruby-identifier">args</span>)
382
+ <span class="ruby-constant">Glyph</span>.<span class="ruby-identifier">down_triangle</span>(<span class="ruby-identifier">args</span>).<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">g</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@svg</span>.<span class="ruby-identifier">add_primitive</span>(<span class="ruby-identifier">g</span>) }
383
+ <span class="ruby-keyword">end</span></pre>
384
+ </div><!-- draw_down_triangle-source -->
385
+
386
+ </div>
387
+
388
+
389
+
390
+
391
+ </div><!-- draw_down_triangle-method -->
392
+
393
+
394
+ <div id="method-i-draw_features" class="method-detail ">
395
+
396
+ <div class="method-heading">
397
+ <span class="method-name">draw_features</span><span
398
+ class="method-args">(track)</span>
399
+
400
+ <span class="method-click-advice">click to toggle source</span>
401
+
402
+ </div>
403
+
404
+
405
+ <div class="method-description">
406
+
407
+ <p>Takes a <a href="Track.html">Bio::Graphics::Track</a> object and sorts out
408
+ the input information into a user friendly format.</p>
409
+
410
+ <p>It examines the the type of track and calculates the required parameters</p>
411
+ <ul><li>
412
+ <p><code>args</code> - an Array of <a
413
+ href="Track.html">Bio::Graphics::Track</a> object</p>
414
+ </li></ul>
415
+
416
+
417
+
418
+
419
+ <div class="method-source-code" id="draw_features-source">
420
+ <pre><span class="ruby-comment"># File lib/bio/graphics/page.rb, line 222</span>
421
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">draw_features</span>(<span class="ruby-identifier">track</span>)
422
+ <span class="ruby-keyword">if</span> [<span class="ruby-value">:histogram</span>, <span class="ruby-string">&quot;histogram&quot;</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">track</span>.<span class="ruby-identifier">glyph</span>) <span class="ruby-comment">#do different stuff for data tracks...</span>
423
+
424
+ <span class="ruby-identifier">y</span> = <span class="ruby-ivar">@track_top</span> <span class="ruby-operator">+</span> (<span class="ruby-identifier">track</span>.<span class="ruby-identifier">track_height</span>)
425
+ <span class="ruby-identifier">max</span> = <span class="ruby-identifier">track</span>.<span class="ruby-identifier">max_y</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">track</span>.<span class="ruby-identifier">max_y</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">track</span>.<span class="ruby-identifier">features</span>.<span class="ruby-identifier">sort</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span>, <span class="ruby-identifier">b</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">segment_height</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">b</span>.<span class="ruby-identifier">segment_height</span> }.<span class="ruby-identifier">last</span>.<span class="ruby-identifier">segment_height</span>
426
+ <span class="ruby-identifier">min</span> = <span class="ruby-value">0</span>
427
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">track</span>.<span class="ruby-identifier">label</span>
428
+ <span class="ruby-identifier">draw_label</span>(<span class="ruby-value">:text</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">track</span>.<span class="ruby-identifier">name</span>, <span class="ruby-value">:y</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@track_top</span> <span class="ruby-operator">+=</span> <span class="ruby-value">30</span>, <span class="ruby-value">:x</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">3</span>)
429
+ <span class="ruby-keyword">end</span>
430
+ <span class="ruby-identifier">draw_label</span>(<span class="ruby-value">:text</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">max</span>, <span class="ruby-value">:x</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">to_px</span>(<span class="ruby-ivar">@scale_stop</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@scale_start</span>) <span class="ruby-operator">+</span> <span class="ruby-value">5</span>, <span class="ruby-value">:y</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@track_top</span> <span class="ruby-operator">+</span> <span class="ruby-value">5</span>)
431
+ <span class="ruby-identifier">draw_label</span>(<span class="ruby-value">:text</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">min</span>, <span class="ruby-value">:x</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">to_px</span>(<span class="ruby-ivar">@scale_stop</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@scale_start</span>) <span class="ruby-operator">+</span> <span class="ruby-value">5</span>, <span class="ruby-value">:y</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@track_top</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">track</span>.<span class="ruby-identifier">track_height</span> <span class="ruby-operator">+</span> <span class="ruby-value">5</span>)
432
+ <span class="ruby-identifier">data_interval</span> = <span class="ruby-identifier">max</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">min</span>
433
+ <span class="ruby-identifier">data_per_px</span> = <span class="ruby-identifier">track</span>.<span class="ruby-identifier">track_height</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">data_interval</span>.<span class="ruby-identifier">to_f</span>
434
+ <span class="ruby-identifier">track</span>.<span class="ruby-identifier">features</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span>
435
+ <span class="ruby-identifier">x</span> = <span class="ruby-identifier">to_px</span>(<span class="ruby-identifier">f</span>.<span class="ruby-identifier">start</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@scale_start</span>)
436
+ <span class="ruby-identifier">width</span> = <span class="ruby-identifier">to_px</span>((<span class="ruby-identifier">f</span>.<span class="ruby-identifier">end</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@scale_start</span>) <span class="ruby-operator">-</span> (<span class="ruby-identifier">f</span>.<span class="ruby-identifier">start</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@scale_start</span>))
437
+ <span class="ruby-identifier">height</span> = <span class="ruby-identifier">f</span>.<span class="ruby-identifier">segment_height</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">data_per_px</span>
438
+ <span class="ruby-identifier">y</span> = <span class="ruby-ivar">@track_top</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">track</span>.<span class="ruby-identifier">track_height</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">height</span> <span class="ruby-operator">+</span> <span class="ruby-value">5</span>
439
+ <span class="ruby-comment">#$stderr.puts f.segment_height, data_per_px, data_interval, max, min, &quot;------&quot;</span>
440
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">send</span>(<span class="ruby-node">&quot;draw_#{track.glyph}&quot;</span>, {<span class="ruby-value">:x</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">x</span>,
441
+ <span class="ruby-value">:y</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">y</span>,
442
+ <span class="ruby-value">:width</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">width</span>,
443
+ <span class="ruby-value">:height</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">height</span>}.<span class="ruby-identifier">merge!</span>(<span class="ruby-identifier">track</span>.<span class="ruby-identifier">args</span>))
444
+ <span class="ruby-keyword">end</span>
445
+ <span class="ruby-ivar">@track_top</span> <span class="ruby-operator">+=</span> (<span class="ruby-identifier">track</span>.<span class="ruby-identifier">track_height</span>) <span class="ruby-operator">+</span> <span class="ruby-value">20</span>
446
+ <span class="ruby-keyword">else</span> <span class="ruby-comment">##following stuff for the features</span>
447
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">track</span>.<span class="ruby-identifier">label</span>
448
+ <span class="ruby-identifier">draw_label</span>(<span class="ruby-value">:text</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">track</span>.<span class="ruby-identifier">name</span>, <span class="ruby-value">:y</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@track_top</span> <span class="ruby-operator">+=</span> <span class="ruby-value">30</span>, <span class="ruby-value">:x</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">3</span>)
449
+ <span class="ruby-keyword">end</span>
450
+ <span class="ruby-identifier">track</span>.<span class="ruby-identifier">get_rows</span> <span class="ruby-comment">##work out how many rows and which features belong in each row...</span>
451
+ <span class="ruby-identifier">track</span>.<span class="ruby-identifier">features</span>.<span class="ruby-identifier">each_with_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">f</span>, <span class="ruby-identifier">index</span><span class="ruby-operator">|</span>
452
+ <span class="ruby-identifier">x</span> = <span class="ruby-identifier">to_px</span>(<span class="ruby-identifier">f</span>.<span class="ruby-identifier">start</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@scale_start</span>) <span class="ruby-comment">#bottom left of feature</span>
453
+ <span class="ruby-identifier">all_sub_blocks</span> = []
454
+
455
+ <span class="ruby-comment">#convert the exon and utr start stops to px start stops and px widths</span>
456
+ <span class="ruby-identifier">exons</span> = []
457
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">exons</span>
458
+ <span class="ruby-identifier">f</span>.<span class="ruby-identifier">exons</span>.<span class="ruby-identifier">each_slice</span>(<span class="ruby-value">2</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">exon</span><span class="ruby-operator">|</span>
459
+ <span class="ruby-identifier">all_sub_blocks</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">exon</span>
460
+ <span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">exon</span>.<span class="ruby-identifier">nil?</span>
461
+ <span class="ruby-identifier">exons</span> <span class="ruby-operator">&lt;&lt;</span> [<span class="ruby-identifier">to_px</span>(<span class="ruby-identifier">exon</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">-</span> <span class="ruby-ivar">@scale_start</span>), <span class="ruby-identifier">to_px</span>((<span class="ruby-identifier">exon</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">-</span> <span class="ruby-ivar">@scale_start</span>) <span class="ruby-operator">-</span> (<span class="ruby-identifier">exon</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">-</span> <span class="ruby-ivar">@scale_start</span>))]
462
+ <span class="ruby-keyword">end</span>
463
+ <span class="ruby-keyword">end</span>
464
+ <span class="ruby-identifier">f</span>.<span class="ruby-identifier">exons</span> = <span class="ruby-identifier">exons</span>
465
+
466
+ <span class="ruby-identifier">utrs</span> = []
467
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">utrs</span>
468
+ <span class="ruby-identifier">f</span>.<span class="ruby-identifier">utrs</span>.<span class="ruby-identifier">each_slice</span>(<span class="ruby-value">2</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">utr</span><span class="ruby-operator">|</span>
469
+ <span class="ruby-identifier">all_sub_blocks</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">utr</span>
470
+ <span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">utr</span>.<span class="ruby-identifier">nil?</span>
471
+ <span class="ruby-identifier">utrs</span> <span class="ruby-operator">&lt;&lt;</span> [<span class="ruby-identifier">to_px</span>(<span class="ruby-identifier">utr</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">-</span> <span class="ruby-ivar">@scale_start</span>), <span class="ruby-identifier">to_px</span>((<span class="ruby-identifier">utr</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">-</span> <span class="ruby-ivar">@scale_start</span>) <span class="ruby-operator">-</span> (<span class="ruby-identifier">utr</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">-</span> <span class="ruby-ivar">@scale_start</span>))]
472
+ <span class="ruby-keyword">end</span>
473
+ <span class="ruby-keyword">end</span>
474
+ <span class="ruby-identifier">f</span>.<span class="ruby-identifier">utrs</span> = <span class="ruby-identifier">utrs</span>
475
+
476
+ <span class="ruby-comment">#if there are any intron like gaps.. get where they would be</span>
477
+ <span class="ruby-keyword">if</span> <span class="ruby-keyword">not</span> <span class="ruby-identifier">all_sub_blocks</span>.<span class="ruby-identifier">empty?</span>
478
+ <span class="ruby-identifier">all_sub_blocks</span> = <span class="ruby-identifier">all_sub_blocks</span>.<span class="ruby-identifier">sort</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span>, <span class="ruby-identifier">b</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">first</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">b</span>.<span class="ruby-identifier">first</span> }
479
+ <span class="ruby-identifier">all_sub_blocks</span>.<span class="ruby-identifier">each_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
480
+ <span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">i</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">all_sub_blocks</span>.<span class="ruby-identifier">length</span> <span class="ruby-keyword">or</span> <span class="ruby-identifier">all_sub_blocks</span>[<span class="ruby-identifier">i</span>].<span class="ruby-identifier">last</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">all_sub_blocks</span>[<span class="ruby-identifier">i</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>].<span class="ruby-identifier">first</span> <span class="ruby-comment">#skip if there is no gap</span>
481
+ <span class="ruby-identifier">f</span>.<span class="ruby-identifier">block_gaps</span> <span class="ruby-operator">&lt;&lt;</span> [<span class="ruby-identifier">to_px</span>(<span class="ruby-identifier">all_sub_blocks</span>[<span class="ruby-identifier">i</span>].<span class="ruby-identifier">last</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@scale_start</span>), <span class="ruby-identifier">to_px</span>((<span class="ruby-identifier">all_sub_blocks</span>[<span class="ruby-identifier">i</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>].<span class="ruby-identifier">first</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@scale_start</span>) <span class="ruby-operator">-</span> (<span class="ruby-identifier">all_sub_blocks</span>[<span class="ruby-identifier">i</span>].<span class="ruby-identifier">last</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@scale_start</span>))]
482
+ <span class="ruby-keyword">end</span>
483
+ <span class="ruby-keyword">end</span>
484
+
485
+ <span class="ruby-identifier">width</span> = <span class="ruby-identifier">to_px</span>((<span class="ruby-identifier">f</span>.<span class="ruby-identifier">end</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@scale_start</span>) <span class="ruby-operator">-</span> (<span class="ruby-identifier">f</span>.<span class="ruby-identifier">start</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@scale_start</span>))
486
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">track</span>.<span class="ruby-identifier">min_width</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">width</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">track</span>.<span class="ruby-identifier">min_width</span>
487
+ <span class="ruby-identifier">width</span> = <span class="ruby-identifier">track</span>.<span class="ruby-identifier">min_width</span>
488
+ <span class="ruby-keyword">end</span>
489
+ <span class="ruby-identifier">y</span> = <span class="ruby-ivar">@track_top</span> <span class="ruby-operator">+</span> (<span class="ruby-identifier">track</span>.<span class="ruby-identifier">feature_rows</span>[<span class="ruby-identifier">index</span>] <span class="ruby-operator">*</span> <span class="ruby-value">2</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">track</span>.<span class="ruby-identifier">feature_height</span>)
490
+
491
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">send</span>(<span class="ruby-node">&quot;draw_#{track.glyph}&quot;</span>, {<span class="ruby-value">:x</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">x</span>,
492
+ <span class="ruby-value">:y</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">y</span>,
493
+ <span class="ruby-value">:width</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">width</span>,
494
+ <span class="ruby-value">:strand</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">strand</span>,
495
+ <span class="ruby-value">:exons</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">exons</span>,
496
+ <span class="ruby-value">:utrs</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">utrs</span>,
497
+ <span class="ruby-value">:block_gaps</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">block_gaps</span>,
498
+ <span class="ruby-value">:height</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">track</span>.<span class="ruby-identifier">feature_height</span>
499
+ }.<span class="ruby-identifier">merge!</span>(<span class="ruby-identifier">track</span>.<span class="ruby-identifier">args</span>))
500
+
501
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">id</span>
502
+ <span class="ruby-identifier">draw_label</span>(<span class="ruby-value">:y</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">y</span>, <span class="ruby-value">:x</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">width</span> <span class="ruby-value">+2</span>, <span class="ruby-value">:text</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">id</span>)
503
+ <span class="ruby-keyword">end</span>
504
+ <span class="ruby-keyword">end</span>
505
+ <span class="ruby-ivar">@track_top</span> <span class="ruby-operator">+=</span> (<span class="ruby-identifier">track</span>.<span class="ruby-identifier">feature_height</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">track</span>.<span class="ruby-identifier">number_rows</span> <span class="ruby-operator">*</span> <span class="ruby-value">2</span>) <span class="ruby-operator">+</span> <span class="ruby-value">20</span>
506
+ <span class="ruby-keyword">end</span>
507
+
508
+ <span class="ruby-ivar">@height</span> = <span class="ruby-ivar">@track_top</span> <span class="ruby-operator">+</span> <span class="ruby-value">100</span> <span class="ruby-comment">#fudge...</span>
509
+ <span class="ruby-ivar">@svg</span>.<span class="ruby-identifier">update_height</span>(<span class="ruby-ivar">@height</span>)
510
+ <span class="ruby-comment">#@svg.update_width(@width + 200)</span>
511
+
512
+ <span class="ruby-keyword">end</span></pre>
513
+ </div><!-- draw_features-source -->
514
+
515
+ </div>
516
+
517
+
518
+
519
+
520
+ </div><!-- draw_features-method -->
521
+
522
+
523
+ <div id="method-i-draw_generic" class="method-detail ">
524
+
525
+ <div class="method-heading">
526
+ <span class="method-name">draw_generic</span><span
527
+ class="method-args">(args)</span>
528
+
529
+ <span class="method-click-advice">click to toggle source</span>
530
+
531
+ </div>
532
+
533
+
534
+ <div class="method-description">
535
+
536
+ <p>Adds the <a href="Primitive.html">Bio::Graphics::Primitive</a> objects to
537
+ the <a href="SVGEE.html">SVGEE</a> object</p>
538
+ <ul><li>
539
+ <p><code>args</code> - an Array of <a
540
+ href="Primitive.html">Bio::Graphics::Primitive</a> objects of the stated
541
+ type</p>
542
+ </li></ul>
543
+
544
+
545
+
546
+
547
+ <div class="method-source-code" id="draw_generic-source">
548
+ <pre><span class="ruby-comment"># File lib/bio/graphics/page.rb, line 179</span>
549
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">draw_generic</span>(<span class="ruby-identifier">args</span>) <span class="ruby-comment">#remember presentation info comes from track@args when the track is defined</span>
550
+ <span class="ruby-constant">Glyph</span>.<span class="ruby-identifier">generic</span>(<span class="ruby-identifier">args</span>).<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">g</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@svg</span>.<span class="ruby-identifier">add_primitive</span>(<span class="ruby-identifier">g</span>) }
551
+ <span class="ruby-keyword">end</span></pre>
552
+ </div><!-- draw_generic-source -->
553
+
554
+ </div>
555
+
556
+
557
+
558
+
559
+ </div><!-- draw_generic-method -->
560
+
561
+
562
+ <div id="method-i-draw_histogram" class="method-detail ">
563
+
564
+ <div class="method-heading">
565
+ <span class="method-name">draw_histogram</span><span
566
+ class="method-args">(args)</span>
567
+
568
+ <span class="method-click-advice">click to toggle source</span>
569
+
570
+ </div>
571
+
572
+
573
+ <div class="method-description">
574
+
575
+ <p>Adds the <a href="Primitive.html">Bio::Graphics::Primitive</a> objects to
576
+ the <a href="SVGEE.html">SVGEE</a> object</p>
577
+ <ul><li>
578
+ <p><code>args</code> - an Array of <a
579
+ href="Primitive.html">Bio::Graphics::Primitive</a> objects of the stated
580
+ type</p>
581
+ </li></ul>
582
+
583
+
584
+
585
+
586
+ <div class="method-source-code" id="draw_histogram-source">
587
+ <pre><span class="ruby-comment"># File lib/bio/graphics/page.rb, line 199</span>
588
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">draw_histogram</span>(<span class="ruby-identifier">args</span>)
589
+ <span class="ruby-constant">Glyph</span>.<span class="ruby-identifier">generic</span>(<span class="ruby-identifier">args</span>).<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">g</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@svg</span>.<span class="ruby-identifier">add_primitive</span>(<span class="ruby-identifier">g</span>) }
590
+ <span class="ruby-keyword">end</span></pre>
591
+ </div><!-- draw_histogram-source -->
592
+
593
+ </div>
594
+
595
+
596
+
597
+
598
+ </div><!-- draw_histogram-method -->
599
+
600
+
601
+ <div id="method-i-draw_label" class="method-detail ">
602
+
603
+ <div class="method-heading">
604
+ <span class="method-name">draw_label</span><span
605
+ class="method-args">(args)</span>
606
+
607
+ <span class="method-click-advice">click to toggle source</span>
608
+
609
+ </div>
610
+
611
+
612
+ <div class="method-description">
613
+
614
+ <p>Adds the <a href="Primitive.html">Bio::Graphics::Primitive</a> objects to
615
+ the <a href="SVGEE.html">SVGEE</a> object</p>
616
+ <ul><li>
617
+ <p><code>args</code> - an Array of <a
618
+ href="Primitive.html">Bio::Graphics::Primitive</a> object</p>
619
+ </li></ul>
620
+
621
+
622
+
623
+
624
+ <div class="method-source-code" id="draw_label-source">
625
+ <pre><span class="ruby-comment"># File lib/bio/graphics/page.rb, line 172</span>
626
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">draw_label</span>(<span class="ruby-identifier">args</span>)
627
+ <span class="ruby-constant">Glyph</span>.<span class="ruby-identifier">label</span>(<span class="ruby-value">:text</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">:text</span>],
628
+ <span class="ruby-value">:x</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">:x</span>],
629
+ <span class="ruby-value">:y</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">:y</span>]).<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">g</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@svg</span>.<span class="ruby-identifier">add_primitive</span>(<span class="ruby-identifier">g</span>) }
630
+ <span class="ruby-keyword">end</span></pre>
631
+ </div><!-- draw_label-source -->
632
+
633
+ </div>
634
+
635
+
636
+
637
+
638
+ </div><!-- draw_label-method -->
639
+
640
+
641
+ <div id="method-i-draw_scale" class="method-detail ">
642
+
643
+ <div class="method-heading">
644
+ <span class="method-name">draw_scale</span><span
645
+ class="method-args">()</span>
646
+
647
+ <span class="method-click-advice">click to toggle source</span>
648
+
649
+ </div>
650
+
651
+
652
+ <div class="method-description">
653
+
654
+ <p>Adds the <a href="Primitive.html">Bio::Graphics::Primitive</a> objects to
655
+ the <a href="SVGEE.html">SVGEE</a> object</p>
656
+
657
+
658
+
659
+
660
+ <div class="method-source-code" id="draw_scale-source">
661
+ <pre><span class="ruby-comment"># File lib/bio/graphics/page.rb, line 165</span>
662
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">draw_scale</span>
663
+ <span class="ruby-constant">Glyph</span>.<span class="ruby-identifier">scale</span>(<span class="ruby-value">:start</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@scale_start</span>,
664
+ <span class="ruby-value">:stop</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@scale_stop</span>,
665
+ <span class="ruby-value">:number_of_intervals</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@num_intervals</span>, <span class="ruby-value">:page_width</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@width</span>).<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">g</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@svg</span>.<span class="ruby-identifier">add_primitive</span>(<span class="ruby-identifier">g</span>) }
666
+ <span class="ruby-keyword">end</span></pre>
667
+ </div><!-- draw_scale-source -->
668
+
669
+ </div>
670
+
671
+
672
+
673
+
674
+ </div><!-- draw_scale-method -->
675
+
676
+
677
+ <div id="method-i-draw_span" class="method-detail ">
678
+
679
+ <div class="method-heading">
680
+ <span class="method-name">draw_span</span><span
681
+ class="method-args">(args)</span>
682
+
683
+ <span class="method-click-advice">click to toggle source</span>
684
+
685
+ </div>
686
+
687
+
688
+ <div class="method-description">
689
+
690
+ <p>Adds the <a href="Primitive.html">Bio::Graphics::Primitive</a> objects to
691
+ the <a href="SVGEE.html">SVGEE</a> object</p>
692
+ <ul><li>
693
+ <p><code>args</code> - an Array of <a
694
+ href="Primitive.html">Bio::Graphics::Primitive</a> objects of the stated
695
+ type</p>
696
+ </li></ul>
697
+
698
+
699
+
700
+
701
+ <div class="method-source-code" id="draw_span-source">
702
+ <pre><span class="ruby-comment"># File lib/bio/graphics/page.rb, line 214</span>
703
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">draw_span</span>(<span class="ruby-identifier">args</span>)
704
+ <span class="ruby-constant">Glyph</span>.<span class="ruby-identifier">span</span>(<span class="ruby-identifier">args</span>).<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">g</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@svg</span>.<span class="ruby-identifier">add_primitive</span>(<span class="ruby-identifier">g</span>) }
705
+ <span class="ruby-keyword">end</span></pre>
706
+ </div><!-- draw_span-source -->
707
+
708
+ </div>
709
+
710
+
711
+
712
+
713
+ </div><!-- draw_span-method -->
714
+
715
+
716
+ <div id="method-i-draw_transcript" class="method-detail ">
717
+
718
+ <div class="method-heading">
719
+ <span class="method-name">draw_transcript</span><span
720
+ class="method-args">(args)</span>
721
+
722
+ <span class="method-click-advice">click to toggle source</span>
723
+
724
+ </div>
725
+
726
+
727
+ <div class="method-description">
728
+
729
+ <p>Adds the <a href="Primitive.html">Bio::Graphics::Primitive</a> objects to
730
+ the <a href="SVGEE.html">SVGEE</a> object</p>
731
+ <ul><li>
732
+ <p><code>args</code> - an Array of <a
733
+ href="Primitive.html">Bio::Graphics::Primitive</a> objects of the stated
734
+ type</p>
735
+ </li></ul>
736
+
737
+
738
+
739
+
740
+ <div class="method-source-code" id="draw_transcript-source">
741
+ <pre><span class="ruby-comment"># File lib/bio/graphics/page.rb, line 194</span>
742
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">draw_transcript</span>(<span class="ruby-identifier">args</span>)
743
+ <span class="ruby-constant">Glyph</span>.<span class="ruby-identifier">transcript</span>(<span class="ruby-identifier">args</span>).<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">g</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@svg</span>.<span class="ruby-identifier">add_primitive</span>(<span class="ruby-identifier">g</span>) }
744
+ <span class="ruby-keyword">end</span></pre>
745
+ </div><!-- draw_transcript-source -->
746
+
747
+ </div>
748
+
749
+
750
+
751
+
752
+ </div><!-- draw_transcript-method -->
753
+
754
+
755
+ <div id="method-i-draw_up_triangle" class="method-detail ">
756
+
757
+ <div class="method-heading">
758
+ <span class="method-name">draw_up_triangle</span><span
759
+ class="method-args">(args)</span>
760
+
761
+ <span class="method-click-advice">click to toggle source</span>
762
+
763
+ </div>
764
+
765
+
766
+ <div class="method-description">
767
+
768
+ <p>Adds the <a href="Primitive.html">Bio::Graphics::Primitive</a> objects to
769
+ the <a href="SVGEE.html">SVGEE</a> object</p>
770
+ <ul><li>
771
+ <p><code>args</code> - an Array of <a
772
+ href="Primitive.html">Bio::Graphics::Primitive</a> objects of the stated
773
+ type</p>
774
+ </li></ul>
775
+
776
+
777
+
778
+
779
+ <div class="method-source-code" id="draw_up_triangle-source">
780
+ <pre><span class="ruby-comment"># File lib/bio/graphics/page.rb, line 204</span>
781
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">draw_up_triangle</span>(<span class="ruby-identifier">args</span>)
782
+ <span class="ruby-constant">Glyph</span>.<span class="ruby-identifier">up_triangle</span>(<span class="ruby-identifier">args</span>).<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">g</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@svg</span>.<span class="ruby-identifier">add_primitive</span>(<span class="ruby-identifier">g</span>) }
783
+ <span class="ruby-keyword">end</span></pre>
784
+ </div><!-- draw_up_triangle-source -->
785
+
786
+ </div>
787
+
788
+
789
+
790
+
791
+ </div><!-- draw_up_triangle-method -->
792
+
793
+
794
+ <div id="method-i-get_limits" class="method-detail ">
795
+
796
+ <div class="method-heading">
797
+ <span class="method-name">get_limits</span><span
798
+ class="method-args">()</span>
799
+
800
+ <span class="method-click-advice">click to toggle source</span>
801
+
802
+ </div>
803
+
804
+
805
+ <div class="method-description">
806
+
807
+ <p>Calculates the <a href="Page.html">Page</a> scale-start and scale-stop
808
+ position and the nucleotides per pixel for the current <a
809
+ href="Page.html">Page</a></p>
810
+
811
+
812
+
813
+
814
+ <div class="method-source-code" id="get_limits-source">
815
+ <pre><span class="ruby-comment"># File lib/bio/graphics/page.rb, line 154</span>
816
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">get_limits</span>
817
+ <span class="ruby-ivar">@tracks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">track</span><span class="ruby-operator">|</span>
818
+ <span class="ruby-identifier">lowest</span> = <span class="ruby-identifier">track</span>.<span class="ruby-identifier">features</span>.<span class="ruby-identifier">sort</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</span><span class="ruby-operator">|</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">start</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">y</span>.<span class="ruby-identifier">start</span> }.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">start</span>
819
+ <span class="ruby-identifier">highest</span> = <span class="ruby-identifier">track</span>.<span class="ruby-identifier">features</span>.<span class="ruby-identifier">sort</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</span><span class="ruby-operator">|</span> <span class="ruby-identifier">y</span>.<span class="ruby-identifier">end</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">end</span> }.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">end</span>
820
+ <span class="ruby-ivar">@scale_start</span> = <span class="ruby-identifier">lowest</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">lowest</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@scale_start</span>
821
+ <span class="ruby-ivar">@scale_stop</span> = <span class="ruby-identifier">highest</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">highest</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@scale_stop</span>
822
+ <span class="ruby-ivar">@nt_per_px_x</span> = (<span class="ruby-ivar">@scale_stop</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@scale_start</span>).<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-ivar">@width</span>.<span class="ruby-identifier">to_f</span>
823
+ <span class="ruby-keyword">end</span>
824
+ <span class="ruby-keyword">end</span></pre>
825
+ </div><!-- get_limits-source -->
826
+
827
+ </div>
828
+
829
+
830
+
831
+
832
+ </div><!-- get_limits-method -->
833
+
834
+
835
+ <div id="method-i-get_markup" class="method-detail ">
836
+
837
+ <div class="method-heading">
838
+ <span class="method-name">get_markup</span><span
839
+ class="method-args">()</span>
840
+
841
+ <span class="method-click-advice">click to toggle source</span>
842
+
843
+ </div>
844
+
845
+
846
+ <div class="method-description">
847
+
848
+ <p>Pulls together all track information to create svg text which will draw all
849
+ the features on the page to scale Uses the methods <code>get_limits</code>
850
+ and <code>draw_scale</code> and then <code>draw_feature</code> for each
851
+ track on the page</p>
852
+
853
+
854
+
855
+
856
+ <div class="method-source-code" id="get_markup-source">
857
+ <pre><span class="ruby-comment"># File lib/bio/graphics/page.rb, line 323</span>
858
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">get_markup</span>
859
+ <span class="ruby-identifier">get_limits</span>
860
+ <span class="ruby-identifier">draw_scale</span>
861
+ <span class="ruby-ivar">@tracks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">track</span><span class="ruby-operator">|</span>
862
+ <span class="ruby-identifier">draw_features</span>(<span class="ruby-identifier">track</span>)
863
+ <span class="ruby-keyword">end</span>
864
+ <span class="ruby-ivar">@svg</span>.<span class="ruby-identifier">draw</span>
865
+ <span class="ruby-keyword">end</span></pre>
866
+ </div><!-- get_markup-source -->
867
+
868
+ </div>
869
+
870
+
871
+
872
+
873
+ </div><!-- get_markup-method -->
874
+
875
+
876
+ <div id="method-i-to_px" class="method-detail ">
877
+
878
+ <div class="method-heading">
879
+ <span class="method-name">to_px</span><span
880
+ class="method-args">(num)</span>
881
+
882
+ <span class="method-click-advice">click to toggle source</span>
883
+
884
+ </div>
885
+
886
+
887
+ <div class="method-description">
888
+
889
+ <p>Provides the number of pixels required for a given number of nucleotides,
890
+ e.g the length of a certain exon</p>
891
+ <ul><li>
892
+ <p><code>num</code> - the number of nucleotides</p>
893
+ </li><li>
894
+ <p><code>returns</code> - the required number of pixels to draw the object</p>
895
+ </li></ul>
896
+
897
+
898
+
899
+
900
+ <div class="method-source-code" id="to_px-source">
901
+ <pre><span class="ruby-comment"># File lib/bio/graphics/page.rb, line 317</span>
902
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">to_px</span>(<span class="ruby-identifier">num</span>)
903
+ (<span class="ruby-identifier">num</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-ivar">@nt_per_px_x</span>.<span class="ruby-identifier">to_f</span>)
904
+ <span class="ruby-keyword">end</span></pre>
905
+ </div><!-- to_px-source -->
906
+
907
+ </div>
908
+
909
+
910
+
911
+
912
+ </div><!-- to_px-method -->
913
+
914
+
915
+ <div id="method-i-write" class="method-detail ">
916
+
917
+ <div class="method-heading">
918
+ <span class="method-name">write</span><span
919
+ class="method-args">(file)</span>
920
+
921
+ <span class="method-click-advice">click to toggle source</span>
922
+
923
+ </div>
924
+
925
+
926
+ <div class="method-description">
927
+
928
+ <p>Writes the svg text to a file</p>
929
+ <ul><li>
930
+ <p><code>file</code> - the file to which the svg text should be written</p>
931
+ </li></ul>
932
+
933
+
934
+
935
+
936
+ <div class="method-source-code" id="write-source">
937
+ <pre><span class="ruby-comment"># File lib/bio/graphics/page.rb, line 338</span>
938
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">write</span>(<span class="ruby-identifier">file</span>)
939
+ <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">file</span>, <span class="ruby-string">'w'</span>).<span class="ruby-identifier">write</span>(<span class="ruby-identifier">get_markup</span>)
940
+ <span class="ruby-keyword">end</span></pre>
941
+ </div><!-- write-source -->
942
+
943
+ </div>
944
+
945
+
946
+
947
+
948
+ </div><!-- write-method -->
949
+
950
+
951
+ </section><!-- public-instance-method-details -->
952
+
953
+ <section id="public-class-5Buntitled-5D-method-details" class="method-section section">
954
+ <h3 class="section-header">Public Class Methods</h3>
955
+
956
+
957
+ <div id="method-c-from_json" class="method-detail ">
958
+
959
+ <div class="method-heading">
960
+ <span class="method-name">from_json</span><span
961
+ class="method-args">(args)</span>
962
+
963
+ <span class="method-click-advice">click to toggle source</span>
964
+
965
+ </div>
966
+
967
+
968
+ <div class="method-description">
969
+
970
+ <p>Takes a custom-written json file and writes an svg page to file which will
971
+ contain the given features described within the json file.</p>
972
+ <ul><li>
973
+ <p><code>args</code> - a custom-written json file describing the parameters
974
+ and resources needed for a new page</p>
975
+ </li></ul>
976
+
977
+
978
+
979
+
980
+ <div class="method-source-code" id="from_json-source">
981
+ <pre><span class="ruby-comment"># File lib/bio/graphics/page.rb, line 53</span>
982
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">from_json</span>(<span class="ruby-identifier">args</span>)
983
+ <span class="ruby-identifier">require</span> <span class="ruby-string">'rubygems'</span>
984
+ <span class="ruby-identifier">require</span> <span class="ruby-string">'json'</span>
985
+ <span class="ruby-identifier">data</span> = <span class="ruby-constant">JSON</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">:json</span>], <span class="ruby-string">'r'</span>).<span class="ruby-identifier">read</span>)
986
+ <span class="ruby-identifier">p</span> = <span class="ruby-constant">Page</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">:width</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">data</span>[<span class="ruby-string">&quot;Page&quot;</span>][<span class="ruby-string">&quot;width&quot;</span>],
987
+ <span class="ruby-value">:height</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">data</span>[<span class="ruby-string">&quot;Page&quot;</span>][<span class="ruby-string">&quot;height&quot;</span>],
988
+ <span class="ruby-value">:number_of_intervals</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">data</span>[<span class="ruby-string">&quot;Page&quot;</span>][<span class="ruby-string">&quot;intervals&quot;</span>])
989
+ <span class="ruby-identifier">data</span>[<span class="ruby-string">&quot;Tracks&quot;</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">track</span><span class="ruby-operator">|</span>
990
+ <span class="ruby-comment">#prep the track args</span>
991
+ <span class="ruby-identifier">track_args</span> = <span class="ruby-identifier">track</span>.<span class="ruby-identifier">dup</span>
992
+ <span class="ruby-identifier">track_args</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-string">&quot;file&quot;</span>)
993
+ <span class="ruby-identifier">track_args</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-string">&quot;file_type&quot;</span>)
994
+ <span class="ruby-identifier">track_args</span> = <span class="ruby-identifier">track_args</span>.<span class="ruby-identifier">inject</span>({}) { <span class="ruby-operator">|</span><span class="ruby-identifier">memo</span>, (<span class="ruby-identifier">k</span>, <span class="ruby-identifier">v</span>)<span class="ruby-operator">|</span> <span class="ruby-identifier">memo</span>[<span class="ruby-identifier">k</span>.<span class="ruby-identifier">to_sym</span>] = <span class="ruby-identifier">v</span>; <span class="ruby-identifier">memo</span> }
995
+ <span class="ruby-comment">##convert any of the pre-made gradient strings in the keys to symbol</span>
996
+ <span class="ruby-identifier">track_args</span>.<span class="ruby-identifier">each_key</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span>
997
+ <span class="ruby-keyword">next</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">track_args</span>[<span class="ruby-identifier">k</span>].<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:to_sym</span>)
998
+ <span class="ruby-identifier">track_args</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">track_args</span>[<span class="ruby-identifier">k</span>].<span class="ruby-identifier">to_sym</span> <span class="ruby-keyword">if</span> <span class="ruby-constant">Glyph</span>.<span class="ruby-identifier">gradients</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">track_args</span>[<span class="ruby-identifier">k</span>].<span class="ruby-identifier">to_sym</span>)
999
+ <span class="ruby-keyword">end</span>
1000
+
1001
+ <span class="ruby-identifier">svg_track</span> = <span class="ruby-identifier">p</span>.<span class="ruby-identifier">add_track</span>(<span class="ruby-identifier">track_args</span>)
1002
+ <span class="ruby-identifier">features</span> = [] <span class="ruby-comment">##set up the features...</span>
1003
+
1004
+ <span class="ruby-keyword">case</span> <span class="ruby-identifier">track</span>[<span class="ruby-string">&quot;file_type&quot;</span>] <span class="ruby-comment">##deal with the gff and data files</span>
1005
+ <span class="ruby-keyword">when</span> <span class="ruby-string">&quot;gff&quot;</span>
1006
+ <span class="ruby-identifier">groups</span> = {}
1007
+ <span class="ruby-identifier">parentless_features</span> = []
1008
+ <span class="ruby-constant">Page</span>.<span class="ruby-identifier">parse_gff</span>(<span class="ruby-identifier">track</span>[<span class="ruby-string">&quot;file&quot;</span>]).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">gff</span><span class="ruby-operator">|</span> <span class="ruby-comment">#gets features in a list and links their children to them as members of the array at the key</span>
1009
+ <span class="ruby-identifier">parent_id</span> = <span class="ruby-identifier">gff</span>.<span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">select</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">first</span> <span class="ruby-operator">==</span> <span class="ruby-string">'Parent'</span> }
1010
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">parent_id</span>.<span class="ruby-identifier">empty?</span>
1011
+ <span class="ruby-identifier">parentless_features</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">gff</span>
1012
+ <span class="ruby-keyword">else</span>
1013
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">groups</span>[<span class="ruby-identifier">parent_id</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">last</span>].<span class="ruby-identifier">nil?</span>
1014
+ <span class="ruby-identifier">groups</span>[<span class="ruby-identifier">parent_id</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">last</span>] = []
1015
+ <span class="ruby-identifier">groups</span>[<span class="ruby-identifier">parent_id</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">last</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">gff</span>
1016
+ <span class="ruby-keyword">else</span>
1017
+ <span class="ruby-identifier">groups</span>[<span class="ruby-identifier">parent_id</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">last</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">gff</span>
1018
+ <span class="ruby-keyword">end</span>
1019
+ <span class="ruby-keyword">end</span>
1020
+ <span class="ruby-keyword">end</span>
1021
+ <span class="ruby-comment">#now flick through the parentless features and add any exons / UTRs</span>
1022
+ <span class="ruby-identifier">parentless_features</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">plf</span><span class="ruby-operator">|</span>
1023
+ <span class="ruby-identifier">require</span> <span class="ruby-string">'pp'</span>
1024
+ <span class="ruby-comment">#pp parentless_features</span>
1025
+ <span class="ruby-identifier">gff_id</span> = <span class="ruby-identifier">plf</span>.<span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">select</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">first</span> <span class="ruby-operator">==</span> <span class="ruby-string">'ID'</span> }
1026
+ <span class="ruby-identifier">gff_id</span> = <span class="ruby-identifier">gff_id</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">last</span>
1027
+ <span class="ruby-identifier">exons</span> = []
1028
+ <span class="ruby-identifier">utrs</span> = []
1029
+ <span class="ruby-identifier">children</span> = <span class="ruby-identifier">groups</span>[<span class="ruby-identifier">gff_id</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">children</span> = []
1030
+ <span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">child</span><span class="ruby-operator">|</span>
1031
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">child</span>.<span class="ruby-identifier">feature</span> <span class="ruby-operator">==</span> <span class="ruby-string">'exon'</span> <span class="ruby-keyword">or</span> <span class="ruby-identifier">child</span>.<span class="ruby-identifier">feature</span> <span class="ruby-operator">==</span> <span class="ruby-string">'CDS'</span>
1032
+ <span class="ruby-identifier">exons</span> <span class="ruby-operator">+=</span> [<span class="ruby-identifier">child</span>.<span class="ruby-identifier">start</span>, <span class="ruby-identifier">child</span>.<span class="ruby-identifier">end</span>]
1033
+ <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">child</span>.<span class="ruby-identifier">feature</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/utr/</span>
1034
+ <span class="ruby-identifier">utrs</span> <span class="ruby-operator">+=</span> [<span class="ruby-identifier">child</span>.<span class="ruby-identifier">start</span>, <span class="ruby-identifier">child</span>.<span class="ruby-identifier">end</span>]
1035
+ <span class="ruby-keyword">end</span>
1036
+ <span class="ruby-keyword">end</span>
1037
+ <span class="ruby-identifier">features</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">MiniFeature</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">:start</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">plf</span>.<span class="ruby-identifier">start</span>, <span class="ruby-value">:end</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">plf</span>.<span class="ruby-identifier">end</span>, <span class="ruby-value">:exons</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">exons</span>, <span class="ruby-value">:utrs</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">utrs</span>, <span class="ruby-value">:strand</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">plf</span>.<span class="ruby-identifier">strand</span>, <span class="ruby-value">:id</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">gff_id</span>)
1038
+ <span class="ruby-keyword">end</span> <span class="ruby-comment">#parentless features end</span>
1039
+ <span class="ruby-keyword">when</span> <span class="ruby-string">&quot;data&quot;</span>
1040
+ <span class="ruby-comment">##each line is a data feature</span>
1041
+ <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">track</span>[<span class="ruby-string">&quot;file&quot;</span>], <span class="ruby-string">&quot;r&quot;</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
1042
+ <span class="ruby-identifier">start</span>, <span class="ruby-identifier">stop</span>, <span class="ruby-identifier">value</span> = <span class="ruby-identifier">line</span>.<span class="ruby-identifier">split</span>(<span class="ruby-regexp">/\t/</span>)
1043
+ <span class="ruby-identifier">features</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">MiniFeature</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">:start</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">start</span>.<span class="ruby-identifier">to_i</span>, <span class="ruby-value">:end</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">stop</span>.<span class="ruby-identifier">to_i</span>, <span class="ruby-value">:segment_height</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">to_f</span>)
1044
+ <span class="ruby-keyword">end</span>
1045
+ <span class="ruby-keyword">end</span> <span class="ruby-comment">#data end</span>
1046
+ <span class="ruby-identifier">features</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">svg_track</span>.<span class="ruby-identifier">add</span>(<span class="ruby-identifier">f</span>) }
1047
+ <span class="ruby-keyword">end</span> <span class="ruby-comment">#track end</span>
1048
+ <span class="ruby-identifier">p</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">:outfile</span>])
1049
+ <span class="ruby-keyword">end</span></pre>
1050
+ </div><!-- from_json-source -->
1051
+
1052
+ </div>
1053
+
1054
+
1055
+
1056
+
1057
+ </div><!-- from_json-method -->
1058
+
1059
+
1060
+ <div id="method-c-new" class="method-detail ">
1061
+
1062
+ <div class="method-heading">
1063
+ <span class="method-name">new</span><span
1064
+ class="method-args">(args)</span>
1065
+
1066
+ <span class="method-click-advice">click to toggle source</span>
1067
+
1068
+ </div>
1069
+
1070
+
1071
+ <div class="method-description">
1072
+
1073
+ <p>Creates a new <a href="Page.html">Page</a> object.</p>
1074
+
1075
+ <p>A new <a href="Page.html">Page</a> contains the following arguments:</p>
1076
+ <ul><li>
1077
+ <p>height = the height of the page</p>
1078
+ </li><li>
1079
+ <p>width = the width of the page</p>
1080
+ </li><li>
1081
+ <p>style = includes the a background colour</p>
1082
+ </li><li>
1083
+ <p>svg = a new <a href="SVGEE.html">SVGEE</a> object</p>
1084
+ </li><li>
1085
+ <p>scale_start = the scale-start of the page (1.0/0.0)</p>
1086
+ </li><li>
1087
+ <p>scale_stop = the scale-stop of the page (-1.0/0.0)</p>
1088
+ </li><li>
1089
+ <p>tracks = an array of track objects with loads of features in it…</p>
1090
+ </li><li>
1091
+ <p>nt_per_percent = the number of nucleotides that are represented by 1% of
1092
+ the page (1);</p>
1093
+ </li><li>
1094
+ <p>num_intervals = the number of intervals</p>
1095
+ </li><li>
1096
+ <p>track_top = the position of the top of the first track (30)</p>
1097
+ </li></ul>
1098
+
1099
+ <p>A new page maybe set up as follows:</p>
1100
+
1101
+ <pre class="ruby"><span class="ruby-ivar">@page</span> = <span class="ruby-constant">Bio</span><span class="ruby-operator">::</span><span class="ruby-constant">Graphics</span><span class="ruby-operator">::</span><span class="ruby-constant">Page</span>.<span class="ruby-identifier">new</span>(:<span class="ruby-identifier">width</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">800</span>,
1102
+ :<span class="ruby-identifier">height</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">110</span>, :<span class="ruby-identifier">number_of_intervals</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">10</span>)
1103
+ </pre>
1104
+
1105
+
1106
+
1107
+
1108
+ <div class="method-source-code" id="new-source">
1109
+ <pre><span class="ruby-comment"># File lib/bio/graphics/page.rb, line 30</span>
1110
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">args</span>)
1111
+ <span class="ruby-ivar">@height</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">:height</span>]
1112
+ <span class="ruby-ivar">@width</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">:width</span>]
1113
+ <span class="ruby-identifier">args</span>[<span class="ruby-value">:style</span>] = <span class="ruby-node">&quot;background-color:#{args[:background_color]};&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">:background_color</span>]
1114
+ <span class="ruby-ivar">@svg</span> = <span class="ruby-constant">SVGEE</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">args</span>)
1115
+ <span class="ruby-ivar">@scale_start</span> = <span class="ruby-value">1.0</span><span class="ruby-operator">/</span><span class="ruby-value">0.0</span>
1116
+ <span class="ruby-ivar">@scale_stop</span> = <span class="ruby-value">-1.0</span><span class="ruby-operator">/</span><span class="ruby-value">0.0</span>
1117
+ <span class="ruby-ivar">@tracks</span> = [] <span class="ruby-comment">#array of track objects with loads of features in it...</span>
1118
+ <span class="ruby-ivar">@nt_per_percent</span> = <span class="ruby-value">1</span>;
1119
+ <span class="ruby-ivar">@num_intervals</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">:number_of_intervals</span>]
1120
+ <span class="ruby-ivar">@track_top</span> = <span class="ruby-value">30</span>
1121
+
1122
+ <span class="ruby-keyword">def</span> <span class="ruby-ivar">@svg</span>.<span class="ruby-identifier">update_height</span>(<span class="ruby-identifier">height</span>)
1123
+ <span class="ruby-ivar">@height</span> = <span class="ruby-identifier">height</span>
1124
+ <span class="ruby-keyword">end</span>
1125
+
1126
+ <span class="ruby-comment">#def @svg.update_width(width)</span>
1127
+ <span class="ruby-comment"># @width = width</span>
1128
+ <span class="ruby-comment">#end</span>
1129
+ <span class="ruby-keyword">end</span></pre>
1130
+ </div><!-- new-source -->
1131
+
1132
+ </div>
1133
+
1134
+
1135
+
1136
+
1137
+ </div><!-- new-method -->
1138
+
1139
+
1140
+ <div id="method-c-parse_gff" class="method-detail ">
1141
+
1142
+ <div class="method-heading">
1143
+ <span class="method-name">parse_gff</span><span
1144
+ class="method-args">(gff_file)</span>
1145
+
1146
+ <span class="method-click-advice">click to toggle source</span>
1147
+
1148
+ </div>
1149
+
1150
+
1151
+ <div class="method-description">
1152
+
1153
+ <p>Parses a GFF file into an Array of <a
1154
+ href="http://bioruby.org/rdoc/Bio/GFF/GFF3/Record.html">Bio::GFF::GFF3::Record</a>
1155
+ objects</p>
1156
+ <ul><li>
1157
+ <p><code>gff_file</code> - a GFF-formatted file</p>
1158
+ </li><li>
1159
+ <p><code>returns</code> - an Array of <a
1160
+ href="http://bioruby.org/rdoc/Bio/GFF/GFF3/Record.html">Bio::GFF::GFF3::Record</a>
1161
+ objects</p>
1162
+ </li></ul>
1163
+
1164
+
1165
+
1166
+
1167
+ <div class="method-source-code" id="parse_gff-source">
1168
+ <pre><span class="ruby-comment"># File lib/bio/graphics/page.rb, line 125</span>
1169
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">parse_gff</span>(<span class="ruby-identifier">gff_file</span>)
1170
+ <span class="ruby-identifier">require</span> <span class="ruby-string">'bio'</span>
1171
+ <span class="ruby-identifier">a</span> = []
1172
+ <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">gff_file</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
1173
+ <span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">line</span> <span class="ruby-operator">=~</span> <span class="ruby-node">/^#/</span>
1174
+ <span class="ruby-identifier">a</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">Bio</span><span class="ruby-operator">::</span><span class="ruby-constant">GFF</span><span class="ruby-operator">::</span><span class="ruby-constant">GFF3</span><span class="ruby-operator">::</span><span class="ruby-constant">Record</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">line</span>)
1175
+ <span class="ruby-keyword">end</span>
1176
+ <span class="ruby-identifier">a</span>
1177
+ <span class="ruby-keyword">end</span></pre>
1178
+ </div><!-- parse_gff-source -->
1179
+
1180
+ </div>
1181
+
1182
+
1183
+
1184
+
1185
+ </div><!-- parse_gff-method -->
1186
+
1187
+
1188
+ </section><!-- public-class-method-details -->
1189
+
1190
+ </section><!-- 5Buntitled-5D -->
1191
+
1192
+ </div><!-- documentation -->
1193
+
1194
+
1195
+ <footer id="validator-badges">
1196
+ <p><a href="http://validator.w3.org/check/referer">[Validate]</a>
1197
+ <p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 4.0.0.rc.2.1.
1198
+ <p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
1199
+ </footer>
1200
+