bio-graphics 1.2 → 1.4

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 (331) hide show
  1. data/doc/classes/Bio.html +4 -26
  2. data/doc/classes/Bio/Feature.html +350 -0
  3. data/doc/classes/Bio/Feature.src/M000010.html +21 -0
  4. data/doc/classes/Bio/Feature.src/M000011.html +20 -0
  5. data/doc/classes/Bio/Feature.src/M000012.html +19 -0
  6. data/doc/classes/Bio/Feature.src/M000014.html +21 -0
  7. data/doc/classes/Bio/Feature.src/M000016.html +21 -0
  8. data/doc/classes/Bio/Feature.src/M000034.html +21 -0
  9. data/doc/classes/Bio/Feature.src/M000035.html +20 -0
  10. data/doc/classes/Bio/Feature.src/M000036.html +19 -0
  11. data/doc/classes/Bio/Feature.src/M000038.html +21 -0
  12. data/doc/classes/Bio/Feature.src/M000040.html +21 -0
  13. data/doc/classes/Bio/Feature.src/M000042.html +21 -0
  14. data/doc/classes/Bio/Feature.src/M000043.html +20 -0
  15. data/doc/classes/Bio/Feature.src/M000044.html +21 -0
  16. data/doc/classes/Bio/Feature.src/M000045.html +20 -0
  17. data/doc/classes/Bio/Feature.src/M000046.html +19 -0
  18. data/doc/classes/Bio/Feature.src/M000048.html +21 -0
  19. data/doc/classes/Bio/Feature.src/M000050.html +21 -0
  20. data/doc/classes/Bio/Feature.src/M000074.html +21 -0
  21. data/doc/classes/Bio/Feature.src/M000075.html +20 -0
  22. data/doc/classes/Bio/Feature.src/M000076.html +19 -0
  23. data/doc/classes/Bio/Feature.src/M000078.html +21 -0
  24. data/doc/classes/Bio/Feature.src/M000080.html +21 -0
  25. data/doc/classes/Bio/Feature/Qualifier.html +189 -0
  26. data/doc/classes/Bio/Feature/Qualifier.src/M000017.html +18 -0
  27. data/doc/classes/Bio/Feature/Qualifier.src/M000041.html +18 -0
  28. data/doc/classes/Bio/Feature/Qualifier.src/M000049.html +18 -0
  29. data/doc/classes/Bio/Feature/Qualifier.src/M000051.html +18 -0
  30. data/doc/classes/Bio/Feature/Qualifier.src/M000081.html +18 -0
  31. data/doc/classes/Bio/Features.html +329 -0
  32. data/doc/classes/Bio/Features.src/M000004.html +18 -0
  33. data/doc/classes/Bio/Features.src/M000005.html +19 -0
  34. data/doc/classes/Bio/Features.src/M000006.html +21 -0
  35. data/doc/classes/Bio/Features.src/M000007.html +18 -0
  36. data/doc/classes/Bio/Features.src/M000008.html +18 -0
  37. data/doc/classes/Bio/Features.src/M000009.html +18 -0
  38. data/doc/classes/Bio/Features.src/M000028.html +18 -0
  39. data/doc/classes/Bio/Features.src/M000029.html +19 -0
  40. data/doc/classes/Bio/Features.src/M000030.html +21 -0
  41. data/doc/classes/Bio/Features.src/M000031.html +18 -0
  42. data/doc/classes/Bio/Features.src/M000032.html +18 -0
  43. data/doc/classes/Bio/Features.src/M000033.html +18 -0
  44. data/doc/classes/Bio/Features.src/M000036.html +18 -0
  45. data/doc/classes/Bio/Features.src/M000037.html +19 -0
  46. data/doc/classes/Bio/Features.src/M000038.html +18 -0
  47. data/doc/classes/Bio/Features.src/M000039.html +19 -0
  48. data/doc/classes/Bio/Features.src/M000040.html +21 -0
  49. data/doc/classes/Bio/Features.src/M000041.html +18 -0
  50. data/doc/classes/Bio/Features.src/M000042.html +18 -0
  51. data/doc/classes/Bio/Features.src/M000043.html +18 -0
  52. data/doc/classes/Bio/Features.src/M000068.html +18 -0
  53. data/doc/classes/Bio/Features.src/M000069.html +19 -0
  54. data/doc/classes/Bio/Features.src/M000070.html +21 -0
  55. data/doc/classes/Bio/Features.src/M000071.html +18 -0
  56. data/doc/classes/Bio/Features.src/M000072.html +18 -0
  57. data/doc/classes/Bio/Features.src/M000073.html +18 -0
  58. data/doc/classes/Bio/Graphics.html +28 -42
  59. data/doc/classes/Bio/Graphics/{Panel/Track/Feature.html → Feature.html} +98 -125
  60. data/doc/classes/Bio/Graphics/Feature.src/M000020.html +51 -0
  61. data/doc/classes/Bio/Graphics/Feature.src/M000021.html +65 -0
  62. data/doc/classes/Bio/Graphics/Feature.src/M000022.html +55 -0
  63. data/doc/classes/Bio/Graphics/Feature.src/M000023.html +66 -0
  64. data/doc/classes/Bio/Graphics/Feature.src/M000024.html +51 -0
  65. data/doc/classes/Bio/Graphics/Feature.src/M000025.html +65 -0
  66. data/doc/classes/Bio/Graphics/Feature.src/M000026.html +55 -0
  67. data/doc/classes/Bio/Graphics/Feature.src/M000054.html +51 -0
  68. data/doc/classes/Bio/Graphics/Feature.src/M000055.html +65 -0
  69. data/doc/classes/Bio/Graphics/Feature.src/M000056.html +55 -0
  70. data/doc/classes/Bio/Graphics/Feature/SubFeature.html +348 -0
  71. data/doc/classes/Bio/Graphics/Feature/SubFeature.src/M000025.html +68 -0
  72. data/doc/classes/Bio/Graphics/Feature/SubFeature.src/M000026.html +67 -0
  73. data/doc/classes/Bio/Graphics/Glyph.html +178 -0
  74. data/doc/classes/Bio/Graphics/Glyph/Box.html +139 -0
  75. data/doc/classes/Bio/Graphics/Glyph/Box.src/M000004.html +24 -0
  76. data/doc/classes/Bio/Graphics/Glyph/Box.src/M000032.html +24 -0
  77. data/doc/classes/Bio/Graphics/Glyph/Common.html +187 -0
  78. data/doc/classes/Bio/Graphics/Glyph/Common.src/M000004.html +18 -0
  79. data/doc/classes/Bio/Graphics/Glyph/Common.src/M000005.html +18 -0
  80. data/doc/classes/Bio/Graphics/Glyph/Common.src/M000006.html +24 -0
  81. data/doc/classes/Bio/Graphics/Glyph/Common.src/M000007.html +24 -0
  82. data/doc/classes/Bio/Graphics/Glyph/Common.src/M000033.html +18 -0
  83. data/doc/classes/Bio/Graphics/Glyph/Common.src/M000034.html +24 -0
  84. data/doc/classes/Bio/Graphics/Glyph/Common.src/M000035.html +24 -0
  85. data/doc/classes/Bio/Graphics/Glyph/CustomTestGlyph.html +139 -0
  86. data/doc/classes/Bio/Graphics/Glyph/CustomTestGlyph.src/M000037.html +22 -0
  87. data/doc/classes/Bio/Graphics/Glyph/CustomTestGlyphInFile.html +139 -0
  88. data/doc/classes/Bio/Graphics/Glyph/CustomTestGlyphInFile.src/M000038.html +22 -0
  89. data/doc/classes/Bio/Graphics/Glyph/DirectedBox.html +139 -0
  90. data/doc/classes/Bio/Graphics/Glyph/DirectedBox.src/M000009.html +31 -0
  91. data/doc/classes/Bio/Graphics/Glyph/DirectedBox.src/M000039.html +31 -0
  92. data/doc/classes/Bio/Graphics/Glyph/DirectedGeneric.html +139 -0
  93. data/doc/classes/Bio/Graphics/Glyph/DirectedGeneric.src/M000011.html +26 -0
  94. data/doc/classes/Bio/Graphics/Glyph/DirectedGeneric.src/M000013.html +26 -0
  95. data/doc/classes/Bio/Graphics/Glyph/DirectedGeneric.src/M000043.html +26 -0
  96. data/doc/classes/Bio/Graphics/Glyph/DirectedSpliced.html +139 -0
  97. data/doc/classes/Bio/Graphics/Glyph/DirectedSpliced.src/M000008.html +40 -0
  98. data/doc/classes/Bio/Graphics/Glyph/DirectedSpliced.src/M000010.html +40 -0
  99. data/doc/classes/Bio/Graphics/Glyph/DirectedSpliced.src/M000040.html +40 -0
  100. data/doc/classes/Bio/Graphics/{Panel/Track/Feature/PixelRange.html → Glyph/Dot.html} +16 -19
  101. data/doc/classes/Bio/Graphics/Glyph/Dot.src/M000013.html +22 -0
  102. data/doc/classes/Bio/Graphics/Glyph/Dot.src/M000015.html +22 -0
  103. data/doc/classes/Bio/Graphics/Glyph/Dot.src/M000045.html +22 -0
  104. data/doc/classes/Bio/Graphics/Glyph/Generic.html +139 -0
  105. data/doc/classes/Bio/Graphics/Glyph/Generic.src/M000009.html +18 -0
  106. data/doc/classes/Bio/Graphics/Glyph/Generic.src/M000011.html +18 -0
  107. data/doc/classes/Bio/Graphics/Glyph/Generic.src/M000041.html +18 -0
  108. data/doc/classes/Bio/Graphics/Glyph/Line.html +139 -0
  109. data/doc/classes/Bio/Graphics/Glyph/Line.src/M000012.html +20 -0
  110. data/doc/classes/Bio/Graphics/Glyph/Line.src/M000014.html +20 -0
  111. data/doc/classes/Bio/Graphics/Glyph/Line.src/M000044.html +20 -0
  112. data/doc/classes/Bio/Graphics/Glyph/LineWithHandles.html +139 -0
  113. data/doc/classes/Bio/Graphics/Glyph/LineWithHandles.src/M000014.html +28 -0
  114. data/doc/classes/Bio/Graphics/Glyph/LineWithHandles.src/M000016.html +28 -0
  115. data/doc/classes/Bio/Graphics/Glyph/LineWithHandles.src/M000046.html +28 -0
  116. data/doc/classes/Bio/Graphics/Glyph/Spliced.html +139 -0
  117. data/doc/classes/Bio/Graphics/Glyph/Spliced.src/M000010.html +19 -0
  118. data/doc/classes/Bio/Graphics/Glyph/Spliced.src/M000012.html +19 -0
  119. data/doc/classes/Bio/Graphics/Glyph/Spliced.src/M000042.html +19 -0
  120. data/doc/classes/Bio/Graphics/Glyph/Transcript.html +113 -0
  121. data/doc/classes/Bio/Graphics/Glyph/Triangle.html +139 -0
  122. data/doc/classes/Bio/Graphics/Glyph/Triangle.src/M000007.html +21 -0
  123. data/doc/classes/Bio/Graphics/Glyph/Triangle.src/M000008.html +21 -0
  124. data/doc/classes/Bio/Graphics/Glyph/Triangle.src/M000036.html +21 -0
  125. data/doc/classes/{ImageMap.html → Bio/Graphics/ImageMap.html} +50 -16
  126. data/doc/classes/{ImageMap.src/M000001.html → Bio/Graphics/ImageMap.src/M000030.html} +3 -3
  127. data/doc/classes/Bio/Graphics/ImageMap.src/M000031.html +18 -0
  128. data/doc/classes/Bio/Graphics/ImageMap.src/M000032.html +18 -0
  129. data/doc/classes/Bio/Graphics/ImageMap.src/M000033.html +18 -0
  130. data/doc/classes/{ImageMap.src/M000002.html → Bio/Graphics/ImageMap.src/M000034.html} +7 -4
  131. data/doc/classes/Bio/Graphics/ImageMap.src/M000035.html +24 -0
  132. data/doc/classes/Bio/Graphics/ImageMap.src/M000062.html +18 -0
  133. data/doc/classes/Bio/Graphics/ImageMap.src/M000063.html +18 -0
  134. data/doc/classes/Bio/Graphics/ImageMap.src/M000064.html +27 -0
  135. data/doc/classes/Bio/Graphics/ImageMap.src/M000065.html +24 -0
  136. data/doc/classes/{ImageMap/ImageMapElement.html → Bio/Graphics/ImageMap/Element.html} +14 -14
  137. data/doc/classes/{ImageMap/ImageMapElement.src/M000003.html → Bio/Graphics/ImageMap/Element.src/M000034.html} +3 -3
  138. data/doc/classes/{ImageMap/ImageMapElement.src/M000004.html → Bio/Graphics/ImageMap/Element.src/M000035.html} +6 -4
  139. data/doc/classes/Bio/Graphics/ImageMap/Element.src/M000036.html +19 -0
  140. data/doc/classes/Bio/Graphics/ImageMap/Element.src/M000037.html +22 -0
  141. data/doc/classes/Bio/Graphics/ImageMap/Element.src/M000066.html +19 -0
  142. data/doc/classes/Bio/Graphics/ImageMap/Element.src/M000067.html +22 -0
  143. data/doc/classes/Bio/Graphics/Panel.html +70 -69
  144. data/doc/classes/Bio/Graphics/Panel.src/M000025.html +52 -0
  145. data/doc/classes/Bio/Graphics/Panel.src/M000026.html +20 -0
  146. data/doc/classes/Bio/Graphics/Panel.src/M000027.html +98 -0
  147. data/doc/classes/Bio/Graphics/Panel.src/M000028.html +20 -0
  148. data/doc/classes/Bio/Graphics/Panel.src/M000029.html +52 -0
  149. data/doc/classes/Bio/Graphics/Panel.src/M000030.html +20 -0
  150. data/doc/classes/Bio/Graphics/Panel.src/M000031.html +98 -0
  151. data/doc/classes/Bio/Graphics/Panel.src/M000059.html +52 -0
  152. data/doc/classes/Bio/Graphics/Panel.src/M000060.html +20 -0
  153. data/doc/classes/Bio/Graphics/Panel.src/M000061.html +98 -0
  154. data/doc/classes/Bio/Graphics/{Panel/Ruler.html → Ruler.html} +50 -21
  155. data/doc/classes/Bio/Graphics/Ruler.src/M000015.html +30 -0
  156. data/doc/classes/Bio/Graphics/Ruler.src/M000016.html +20 -0
  157. data/doc/classes/Bio/Graphics/Ruler.src/M000017.html +30 -0
  158. data/doc/classes/Bio/Graphics/Ruler.src/M000018.html +20 -0
  159. data/doc/classes/Bio/Graphics/Ruler.src/M000019.html +26 -0
  160. data/doc/classes/Bio/Graphics/Ruler.src/M000020.html +45 -0
  161. data/doc/classes/Bio/Graphics/Ruler.src/M000047.html +30 -0
  162. data/doc/classes/Bio/Graphics/Ruler.src/M000048.html +20 -0
  163. data/doc/classes/Bio/Graphics/Ruler.src/M000049.html +26 -0
  164. data/doc/classes/Bio/Graphics/Ruler.src/M000050.html +45 -0
  165. data/doc/classes/Bio/Graphics/SubFeature.html +348 -0
  166. data/doc/classes/Bio/Graphics/SubFeature.src/M000001.html +73 -0
  167. data/doc/classes/Bio/Graphics/SubFeature.src/M000002.html +69 -0
  168. data/doc/classes/Bio/Graphics/SubFeature.src/M000023.html +73 -0
  169. data/doc/classes/Bio/Graphics/SubFeature.src/M000024.html +69 -0
  170. data/doc/classes/Bio/Graphics/SubFeature.src/M000027.html +73 -0
  171. data/doc/classes/Bio/Graphics/SubFeature.src/M000028.html +69 -0
  172. data/doc/classes/Bio/Graphics/SubFeature.src/M000057.html +73 -0
  173. data/doc/classes/Bio/Graphics/SubFeature.src/M000058.html +69 -0
  174. data/doc/classes/Bio/Graphics/{Panel/Track.html → Track.html} +67 -69
  175. data/doc/classes/Bio/Graphics/Track.src/M000017.html +39 -0
  176. data/doc/classes/Bio/Graphics/Track.src/M000018.html +37 -0
  177. data/doc/classes/Bio/Graphics/Track.src/M000019.html +45 -0
  178. data/doc/classes/Bio/Graphics/Track.src/M000020.html +41 -0
  179. data/doc/classes/Bio/Graphics/Track.src/M000021.html +39 -0
  180. data/doc/classes/Bio/Graphics/Track.src/M000022.html +37 -0
  181. data/doc/classes/Bio/Graphics/Track.src/M000023.html +45 -0
  182. data/doc/classes/Bio/Graphics/Track.src/M000051.html +39 -0
  183. data/doc/classes/Bio/Graphics/Track.src/M000052.html +37 -0
  184. data/doc/classes/Bio/Graphics/Track.src/M000053.html +45 -0
  185. data/doc/classes/Range.html +129 -0
  186. data/doc/classes/String.html +167 -0
  187. data/doc/classes/String.src/M000001.html +18 -0
  188. data/doc/classes/String.src/M000002.html +18 -0
  189. data/doc/classes/String.src/M000003.html +23 -0
  190. data/doc/classes/String.src/M000029.html +18 -0
  191. data/doc/classes/String.src/M000030.html +18 -0
  192. data/doc/classes/String.src/M000031.html +23 -0
  193. data/doc/classes/TestCustomGlyph.html +137 -0
  194. data/doc/classes/TestCustomGlyph.src/M000025.html +25 -0
  195. data/doc/classes/TestCustomGlyphInFile.html +167 -0
  196. data/doc/classes/TestCustomGlyphInFile.src/M000026.html +19 -0
  197. data/doc/classes/TestCustomGlyphInFile.src/M000027.html +25 -0
  198. data/doc/classes/TestCustomGlyphInFile.src/M000028.html +18 -0
  199. data/doc/classes/TestExtensions.html +152 -0
  200. data/doc/classes/TestExtensions.src/M000015.html +22 -0
  201. data/doc/classes/TestExtensions.src/M000016.html +25 -0
  202. data/doc/classes/TestFeature.html +152 -0
  203. data/doc/classes/TestFeature.src/M000017.html +19 -0
  204. data/doc/classes/TestFeature.src/M000018.html +21 -0
  205. data/doc/classes/TestImageMap.html +182 -0
  206. data/doc/classes/TestImageMap.src/M000019.html +22 -0
  207. data/doc/classes/TestImageMap.src/M000020.html +56 -0
  208. data/doc/classes/TestImageMap.src/M000021.html +56 -0
  209. data/doc/classes/TestImageMap.src/M000022.html +20 -0
  210. data/doc/classes/TestPanel.html +276 -0
  211. data/doc/classes/TestPanel.src/M000001.html +18 -0
  212. data/doc/classes/TestPanel.src/M000002.html +61 -0
  213. data/doc/classes/TestPanel.src/M000003.html +35 -0
  214. data/doc/classes/TestPanel.src/M000004.html +54 -0
  215. data/doc/classes/TestPanel.src/M000005.html +54 -0
  216. data/doc/classes/TestPanel.src/M000006.html +41 -0
  217. data/doc/classes/TestPanel.src/M000007.html +36 -0
  218. data/doc/classes/TestPanel.src/M000008.html +20 -0
  219. data/doc/classes/TestPanel.src/M000009.html +26 -0
  220. data/doc/classes/TestPanel.src/M000010.html +21 -0
  221. data/doc/classes/TestRuler.html +152 -0
  222. data/doc/classes/TestRuler.src/M000013.html +22 -0
  223. data/doc/classes/TestRuler.src/M000014.html +31 -0
  224. data/doc/classes/TestSubFeature.html +152 -0
  225. data/doc/classes/TestSubFeature.src/M000023.html +21 -0
  226. data/doc/classes/TestSubFeature.src/M000024.html +18 -0
  227. data/doc/classes/TestTrack.html +152 -0
  228. data/doc/classes/TestTrack.src/M000011.html +19 -0
  229. data/doc/classes/TestTrack.src/M000012.html +23 -0
  230. data/doc/created.rid +1 -1
  231. data/doc/files/README_DEV.html +399 -70
  232. data/doc/files/TUTORIAL.html +188 -67
  233. data/doc/files/lib/bio-graphics_rb.html +3 -2
  234. data/doc/files/lib/bio/graphics/feature_rb.html +12 -6
  235. data/doc/files/lib/bio/graphics/glyphs/box_rb.html +113 -0
  236. data/doc/files/lib/bio/graphics/glyphs/common_rb.html +113 -0
  237. data/doc/files/lib/bio/graphics/glyphs/directed_box_rb.html +113 -0
  238. data/doc/files/lib/bio/graphics/glyphs/directed_generic_rb.html +113 -0
  239. data/doc/files/lib/bio/graphics/glyphs/directed_spliced_rb.html +113 -0
  240. data/doc/files/lib/bio/graphics/glyphs/dot_rb.html +113 -0
  241. data/doc/files/lib/bio/graphics/glyphs/generic_rb.html +113 -0
  242. data/doc/files/lib/bio/graphics/glyphs/line_rb.html +113 -0
  243. data/doc/files/lib/bio/graphics/glyphs/line_with_handles_rb.html +113 -0
  244. data/doc/files/lib/bio/graphics/glyphs/spliced_rb.html +113 -0
  245. data/doc/files/lib/bio/graphics/glyphs/transcript_rb.html +113 -0
  246. data/doc/files/lib/bio/graphics/glyphs/triangle_rb.html +113 -0
  247. data/doc/files/lib/bio/graphics/image_map_rb.html +3 -2
  248. data/doc/files/lib/bio/graphics/panel_rb.html +10 -2
  249. data/doc/files/lib/bio/graphics/ruler_rb.html +3 -2
  250. data/doc/files/lib/bio/graphics/subfeature_rb.html +114 -0
  251. data/doc/files/lib/bio/graphics/track_rb.html +3 -2
  252. data/doc/files/lib/feature_rb.html +101 -0
  253. data/doc/files/samples/arkdb_features_rb.html +101 -0
  254. data/doc/files/samples/glyph_showcase_rb.html +108 -0
  255. data/doc/files/samples/protein_domains_rb.html +115 -0
  256. data/doc/files/samples/subfeatures_rb.html +108 -0
  257. data/doc/files/scripts/gff2png_rb.html +154 -0
  258. data/doc/files/test/unit/custom_glyph_in_file_rb.html +101 -0
  259. data/doc/files/test/unit/test_class_extensions_rb.html +108 -0
  260. data/doc/files/test/unit/test_creation_rb.html +108 -0
  261. data/doc/files/test/unit/test_custom_glyph_rb.html +108 -0
  262. data/doc/files/test/unit/test_draw_rb.html +108 -0
  263. data/doc/files/test/unit/test_imagemap_rb.html +108 -0
  264. data/doc/files/test/unit/test_subfeatures_rb.html +108 -0
  265. data/doc/fr_class_index.html +24 -6
  266. data/doc/fr_file_index.html +14 -0
  267. data/doc/fr_method_index.html +51 -19
  268. data/doc/images/glyph_showcase.png +0 -0
  269. data/doc/images/terms.svg +146 -132
  270. data/images/glyph_showcase.png +0 -0
  271. data/lib/bio-graphics.rb +38 -6
  272. data/lib/bio/graphics/feature.rb +212 -440
  273. data/lib/bio/graphics/glyphs/box.rb +21 -0
  274. data/lib/bio/graphics/glyphs/common.rb +149 -0
  275. data/lib/bio/graphics/glyphs/directed_box.rb +28 -0
  276. data/lib/bio/graphics/glyphs/directed_generic.rb +23 -0
  277. data/lib/bio/graphics/glyphs/directed_spliced.rb +39 -0
  278. data/lib/bio/graphics/glyphs/dot.rb +21 -0
  279. data/lib/bio/graphics/glyphs/generic.rb +15 -0
  280. data/lib/bio/graphics/glyphs/line.rb +17 -0
  281. data/lib/bio/graphics/glyphs/line_with_handles.rb +25 -0
  282. data/lib/bio/graphics/glyphs/spliced.rb +16 -0
  283. data/lib/bio/graphics/glyphs/transcript.rb +12 -0
  284. data/lib/bio/graphics/glyphs/triangle.rb +18 -0
  285. data/lib/bio/graphics/image_map.rb +25 -4
  286. data/lib/bio/graphics/panel.rb +266 -209
  287. data/lib/bio/graphics/ruler.rb +95 -96
  288. data/lib/bio/graphics/subfeature.rb +187 -0
  289. data/lib/bio/graphics/track.rb +155 -156
  290. data/lib/feature.rb +204 -0
  291. data/samples/arkdb_features.rb +10 -8
  292. data/samples/glyph_showcase.rb +58 -22
  293. data/samples/protein_domains.rb +19 -0
  294. data/samples/subfeatures.rb +31 -0
  295. data/test/unit/custom_glyph_in_file.rb +12 -0
  296. data/test/unit/data.txt +32 -0
  297. data/test/unit/test_class_extensions.rb +23 -0
  298. data/test/unit/test_creation.rb +43 -13
  299. data/test/unit/test_custom_glyph.rb +50 -0
  300. data/test/unit/test_draw.rb +211 -0
  301. data/test/unit/test_imagemap.rb +134 -0
  302. data/test/unit/test_subfeatures.rb +17 -0
  303. metadata +396 -119
  304. data/doc/classes/Bio/Graphics/Panel.src/M000005.html +0 -29
  305. data/doc/classes/Bio/Graphics/Panel.src/M000006.html +0 -19
  306. data/doc/classes/Bio/Graphics/Panel.src/M000007.html +0 -68
  307. data/doc/classes/Bio/Graphics/Panel/Ruler.src/M000008.html +0 -20
  308. data/doc/classes/Bio/Graphics/Panel/Ruler.src/M000009.html +0 -28
  309. data/doc/classes/Bio/Graphics/Panel/Ruler.src/M000010.html +0 -54
  310. data/doc/classes/Bio/Graphics/Panel/Ruler.src/M000013.html +0 -20
  311. data/doc/classes/Bio/Graphics/Panel/Ruler.src/M000014.html +0 -20
  312. data/doc/classes/Bio/Graphics/Panel/Ruler.src/M000015.html +0 -28
  313. data/doc/classes/Bio/Graphics/Panel/Ruler.src/M000016.html +0 -59
  314. data/doc/classes/Bio/Graphics/Panel/Ruler.src/M000017.html +0 -20
  315. data/doc/classes/Bio/Graphics/Panel/Ruler.src/M000018.html +0 -28
  316. data/doc/classes/Bio/Graphics/Panel/Ruler.src/M000019.html +0 -59
  317. data/doc/classes/Bio/Graphics/Panel/Track.src/M000008.html +0 -26
  318. data/doc/classes/Bio/Graphics/Panel/Track.src/M000009.html +0 -42
  319. data/doc/classes/Bio/Graphics/Panel/Track.src/M000010.html +0 -52
  320. data/doc/classes/Bio/Graphics/Panel/Track.src/M000011.html +0 -23
  321. data/doc/classes/Bio/Graphics/Panel/Track.src/M000012.html +0 -43
  322. data/doc/classes/Bio/Graphics/Panel/Track.src/M000013.html +0 -259
  323. data/doc/classes/Bio/Graphics/Panel/Track/Feature.src/M000011.html +0 -65
  324. data/doc/classes/Bio/Graphics/Panel/Track/Feature.src/M000012.html +0 -39
  325. data/doc/classes/Bio/Graphics/Panel/Track/Feature.src/M000013.html +0 -27
  326. data/doc/classes/Bio/Graphics/Panel/Track/Feature.src/M000014.html +0 -225
  327. data/doc/classes/Bio/Graphics/Panel/Track/Feature.src/M000015.html +0 -48
  328. data/doc/classes/Bio/Graphics/Panel/Track/Feature/PixelRange.src/M000012.html +0 -18
  329. data/doc/classes/Bio/Graphics/Panel/Track/Feature/PixelRange.src/M000013.html +0 -18
  330. data/doc/classes/Bio/Graphics/Panel/Track/Feature/PixelRange.src/M000015.html +0 -18
  331. data/doc/classes/Bio/Graphics/Panel/Track/Feature/PixelRange.src/M000016.html +0 -18
@@ -0,0 +1,204 @@
1
+ module Bio
2
+ class Feature
3
+ def initialize(feature, position, qualifiers = [], parent = nil, subfeatures = [])
4
+ @feature, @position, @qualifiers, @parent = feature, position, qualifiers, parent
5
+ @subfeatures = Array.new
6
+ subfeatures.each {|sf| add_subfeature(sf) }
7
+ @locations = Bio::Locations.new(@position)
8
+ end
9
+
10
+ # Returns type of feature in String (e.g 'CDS', 'gene')
11
+ attr_accessor :feature
12
+
13
+ # Returns position of the feature in String (e.g. 'complement(123..146)')
14
+ attr_accessor :position
15
+
16
+ # Returns position of the feature as a Bio::Locations object
17
+ attr_accessor :locations
18
+
19
+ # Returns an Array of Qualifier objects.
20
+ attr_accessor :qualifiers
21
+
22
+ # Returns parent of Bio::Feature is it is a subfeature of another one
23
+ attr_accessor :parent
24
+
25
+ # Returns an Array of Bio::Feature objects
26
+ attr_accessor :subfeatures
27
+
28
+ # Adds a Bio::Feature as a subfeature.
29
+ # *Arguments*:
30
+ # * (required) _feature_: Bio::Feature object
31
+ # *Returns*:: Bio::Feature object
32
+ def add_subfeature(sf)
33
+ sf.parent = self
34
+ @subfeatures.push(sf)
35
+ return self
36
+ end
37
+
38
+ # Adds a Qualifier object to the Feature.
39
+ #
40
+ # *Arguments*:
41
+ # * (required) _qualifier_: Bio::Feature::Qualifier object
42
+ # *Returns*:: Bio::Feature object
43
+ def add_qualifier(a)
44
+ @qualifiers.push(a) if a.is_a? Qualifier
45
+ return self
46
+ end
47
+ alias :append_qualifier :add_qualifier
48
+
49
+ # Iterates on each subfeature object.
50
+ #
51
+ # *Arguments*:
52
+ # * (optional) _key_: if specified, only iterates over subfeatures of this type
53
+ def each_subfeature(arg = nil)
54
+ @subfeatures.each do |x|
55
+ next if arg and x.feature != arg
56
+ yield x
57
+ end
58
+ end
59
+ alias :each :each_subfeature
60
+
61
+ # Iterates on each qualifer object.
62
+ #
63
+ # *Arguments*:
64
+ # * (optional) _key_: if specified, only iterates over qualifiers with this key
65
+ def each_qualifier(arg = nil)
66
+ @qualifiers.each do |x|
67
+ next if arg and x.qualifier != arg
68
+ yield x
69
+ end
70
+ end
71
+
72
+ # # Returns a Hash constructed from qualifier objects.
73
+ # def assoc
74
+ # STDERR.puts "Bio::Feature#assoc is deprecated, use Bio::Feature#to_hash instead" if $DEBUG
75
+ # hash = Hash.new
76
+ # @qualifiers.each do |x|
77
+ # hash[x.qualifier] = x.value
78
+ # end
79
+ # return hash
80
+ # end
81
+ #
82
+ # # Returns a Hash constructed from qualifier objects.
83
+ # def to_hash
84
+ # hash = Hash.new
85
+ # @qualifiers.each do |x|
86
+ # hash[x.qualifier] ||= []
87
+ # hash[x.qualifier] << x.value
88
+ # end
89
+ # return hash
90
+ # end
91
+ #
92
+ # # Short cut for the Bio::Feature#to_hash[key]
93
+ # def [](key)
94
+ # self.to_hash[key]
95
+ # end
96
+
97
+ # Container for qualifier-value pairs for sequence features.
98
+ class Qualifier
99
+ # Creates a new Bio::Feature::Qualifier object
100
+ #
101
+ # *Arguments*:
102
+ # * (required) _key_: key of the qualifier (e.g. "gene")
103
+ # * (required) _value_: value of the qualifier (e.g. "CYP2D6")
104
+ # *Returns*:: Bio::Feature::Qualifier object
105
+ def initialize(key, value)
106
+ @qualifier, @value = key, value
107
+ end
108
+
109
+ # Qualifier name in String
110
+ attr_reader :qualifier
111
+
112
+ # Qualifier value in String
113
+ attr_reader :value
114
+
115
+ end #Qualifier
116
+
117
+ end #Feature
118
+
119
+
120
+ # = DESCRIPTION
121
+ # Container for a list of Feature objects.
122
+ #
123
+ # = USAGE
124
+ # # First, create some Bio::Feature objects
125
+ # feature1 = Bio::Feature.new('intron','3627..4059')
126
+ # feature2 = Bio::Feature.new('exon','4060..4236')
127
+ # feature3 = Bio::Feature.new('intron','4237..4426')
128
+ # feature4 = Bio::Feature.new('CDS','join(2538..3626,4060..4236)',
129
+ # [ Bio::Feature::Qualifier.new('gene', 'CYP2D6'),
130
+ # Bio::Feature::Qualifier.new('translation','MGXXTVMHLL...')
131
+ # ])
132
+ #
133
+ # # And create a container for them
134
+ # feature_container = Bio::Features.new([ feature1, feature2, feature3, feature4 ])
135
+ #
136
+ # # Iterate over all features and print
137
+ # feature_container.each do |feature|
138
+ # puts feature.feature + "\t" + feature.position
139
+ # feature.each do |qualifier|
140
+ # puts "- " + qualifier.qualifier + ": " + qualifier.value
141
+ # end
142
+ # end
143
+ #
144
+ # # Iterate only over CDS features and extract translated amino acid sequences
145
+ # features.each("CDS") do |feature|
146
+ # hash = feature.to_hash
147
+ # name = hash["gene"] || hash["product"] || hash["note"]
148
+ # aaseq = hash["translation"]
149
+ # pos = feature.position
150
+ # if name and seq
151
+ # puts ">#{gene} #{feature.position}"
152
+ # puts aaseq
153
+ # end
154
+ # end
155
+ class Features
156
+ # Create a new Bio::Features object.
157
+ #
158
+ # *Arguments*:
159
+ # * (optional) _list_ _of_ _features_: list of Bio::Feature objects
160
+ # *Returns*:: Bio::Features object
161
+ def initialize(ary = [])
162
+ @features = ary
163
+ end
164
+
165
+ # Returns an Array of Feature objects.
166
+ attr_accessor :features
167
+
168
+ # Appends a Feature object to Features.
169
+ #
170
+ # *Arguments*:
171
+ # * (required) _feature_: Bio::Feature object
172
+ # *Returns*:: Bio::Features object
173
+ def append(a)
174
+ @features.push(a) if a.is_a? Feature
175
+ return self
176
+ end
177
+
178
+ # Iterates on each feature object.
179
+ #
180
+ # *Arguments*:
181
+ # * (optional) _key_: if specified, only iterates over features with this key
182
+ def each(arg = nil)
183
+ @features.each do |x|
184
+ next if arg and x.feature != arg
185
+ yield x
186
+ end
187
+ end
188
+
189
+ # Short cut for the Features#features[n]
190
+ def [](*arg)
191
+ @features[*arg]
192
+ end
193
+
194
+ # Short cut for the Features#features.first
195
+ def first
196
+ @features.first
197
+ end
198
+
199
+ # Short cut for the Features#features.last
200
+ def last
201
+ @features.last
202
+ end
203
+ end
204
+ end
@@ -2,13 +2,15 @@ require File.dirname(__FILE__) + '/../lib/bio-graphics'
2
2
 
3
3
  #Initialize graphic for a nucleotide sequence of 4173015 bp, zooming in on the
4
4
  #region 11111..3333333
5
- my_panel = Bio::Graphics::Panel.new(4173015, 800, true, 11111, 3333333)
5
+ my_panel = Bio::Graphics::Panel.new(4173015, :width => 600, :clickable => true,
6
+ :display_range => 11111..3333333,
7
+ :vertical => true)
6
8
  #my_panel = Bio::Graphics::Panel.new(4173015, 800, false, 1, 4173015)
7
9
 
8
10
  #Create and configure tracks
9
- scaffold_track = my_panel.add_track('scaffold', false)
10
- marker_track = my_panel.add_track('marker', true)
11
- clone_track = my_panel.add_track('clone', false)
11
+ scaffold_track = my_panel.add_track('scaffold', :label => false)
12
+ marker_track = my_panel.add_track('marker')
13
+ clone_track = my_panel.add_track('clone', :label => false)
12
14
 
13
15
  scaffold_track.colour = [1,0,0]
14
16
  marker_track.colour = [0,1,0]
@@ -21,15 +23,15 @@ File.open('data.txt').each do |line|
21
23
  accession, type, start, stop = line.split(/\t/)
22
24
  if type == 'scaffold'
23
25
  if start.nil?
24
- scaffold_track.add_feature(accession)
26
+ scaffold_track.add_feature(Bio::Feature.new('scaffold', '1..4173015'), :label => accession)
25
27
  else
26
- scaffold_track.add_feature(accession, start + '..' + stop)
28
+ scaffold_track.add_feature(Bio::Feature.new('scaffold', start + '..' + stop), :label => accession, :link => 'http://www.google.com/search?q=' + accession)
27
29
  end
28
30
 
29
31
  elsif type == 'marker'
30
- marker_track.add_feature(accession, ((start.to_i + stop.to_i)/2).to_s, 'http://www.thearkdb.org/arkdb/do/getMarkerDetail?accession=' + accession)
32
+ marker_track.add_feature(Bio::Feature.new('marker', ((start.to_i + stop.to_i)/2).to_s), :label => accession, :link => 'http://www.thearkdb.org/arkdb/do/getMarkerDetail?accession=' + accession)
31
33
  elsif type == 'clone'
32
- clone_track.add_feature(accession, start + '..' + stop)
34
+ clone_track.add_feature(Bio::Feature.new('clone', start + '..' + stop), :label => accession)
33
35
  end
34
36
  end
35
37
 
@@ -1,33 +1,69 @@
1
1
  require '../lib/bio-graphics'
2
2
 
3
- my_panel = Bio::Graphics::Panel.new(500, 1000, false)
3
+ my_panel = Bio::Graphics::Panel.new(500, :width => 1000, :format => :svg)
4
4
 
5
- generic_track = my_panel.add_track('generic', false)
6
- line_track = my_panel.add_track('line', false, [0,0,1], :line)
7
- directed_track = my_panel.add_track('directed', false, [0,1,0], :directed_generic)
8
- triangle_track = my_panel.add_track('triangle', false, [1,0,0], :triangle)
9
- spliced_track = my_panel.add_track('spliced', false, [1,0,0], :spliced)
10
- directed_spliced_track = my_panel.add_track('directed_spliced', false, [1,0,1], :directed_spliced)
5
+ generic_track = my_panel.add_track('generic', :label => false)
6
+ box_track = my_panel.add_track('box', :label => false, :glyph => :box)
7
+ line_track = my_panel.add_track('line', :label => false, :glyph => :line, :colour => [0,0,1])
8
+ line_with_handles_track = my_panel.add_track('line_with_handles', :label => false, :glyph => :line_with_handles, :colour => [1,0,0])
9
+ directed_track = my_panel.add_track('directed', :label => false, :glyph => :directed_generic, :colour => [0,1,0])
10
+ directed_box_track = my_panel.add_track('directed_box', :label => false, :glyph => :directed_box, :colour => [0,1,0])
11
+ triangle_track = my_panel.add_track('triangle', :label => false, :glyph => :triangle, :colour => [1,0,0])
12
+ spliced_track = my_panel.add_track('spliced', :label => false, :glyph => :spliced, :colour => [1,0,0])
13
+ directed_spliced_track = my_panel.add_track('directed_spliced', :label => false, :glyph => :directed_spliced, :colour => [1,0,1])
14
+ composite_track = my_panel.add_track('composite_features', :label => false, :glyph => { 'utr5' => :line, 'utr3' => :line, 'cds' => :directed_spliced})
15
+ transcript_track = my_panel.add_track('transcripts', :label => true, :glyph => :transcript)
11
16
 
12
- generic_track.add_feature('clone1','250..375', 'http://www.newsforge.com')
13
- generic_track.add_feature('clone2','54..124', 'http://www.thearkdb.org')
14
- generic_track.add_feature('clone3','100..449', 'http://www.google.com')
17
+ generic_track.add_feature(Bio::Feature.new('clone', '250..375'), :label => 'clone1', :link => 'http://www.newsforge.com', :colour => [0.5,0.8,0.2])
18
+ generic_track.add_feature(Bio::Feature.new('clone', '54..124'), :label => 'clone2', :link => 'http://www.thearkdb.org')
19
+ generic_track.add_feature(Bio::Feature.new('clone', '100..449'), :label => 'clone3', :link => 'http://www.google.com')
15
20
 
16
- line_track.add_feature('primer1','complement(200..320)')
17
- line_track.add_feature('primer2','355..480', 'http://www.zdnet.co.uk')
21
+ line_track.add_feature(Bio::Feature.new('utr', 'complement(200..320)'), :label => 'some_utr')
22
+ line_track.add_feature(Bio::Feature.new('utr', '355..480'), :link => 'http://www.zdnet.co.uk')
18
23
 
19
- directed_track.add_feature('marker1','50..60', 'http://www.google.com')
20
- directed_track.add_feature('marker2','complement(80..120)', 'http://www.sourceforge.net')
24
+ line_with_handles_track.add_feature(Bio::Feature.new('utr', 'complement(200..320)'))
25
+ line_with_handles_track.add_feature(Bio::Feature.new('utr', '355..480'), :link => 'http://www.zdnet.co.uk')
21
26
 
22
- triangle_track.add_feature('snp1','56')
23
- triangle_track.add_feature('snp2','103','http://digg.com')
27
+ directed_track.add_feature(Bio::Feature.new('primer', '50..60'), :link => 'http://www.google.com')
28
+ directed_track.add_feature(Bio::Feature.new('primer', 'complement(80..120)'), :link => 'http://www.sourceforge.net')
24
29
 
25
- spliced_track.add_feature('gene1','join(34..52,109..183)','http://news.bbc.co.uk')
26
- spliced_track.add_feature('gene2','complement(join(170..231,264..299,350..360,409..445))')
27
- spliced_track.add_feature('gene3','join(134..152,209..283)')
30
+ directed_box_track.add_feature(Bio::Feature.new('primer', '50..60'), :link => 'http://www.google.com')
31
+ directed_box_track.add_feature(Bio::Feature.new('primer', 'complement(80..120)'), :link => 'http://www.sourceforge.net')
28
32
 
29
- directed_spliced_track.add_feature('gene4','join(34..52,109..183)', 'http://www.vrtnieuws.net')
30
- directed_spliced_track.add_feature('gene5','complement(join(170..231,264..299,350..360,409..445))', 'http://bioinformatics.roslin.ac.uk')
31
- directed_spliced_track.add_feature('gene6','join(134..152,209..283)')
33
+ triangle_track.add_feature(Bio::Feature.new('snp', '56'))
34
+ triangle_track.add_feature(Bio::Feature.new('snp', '103'), :link =>'http://digg.com')
32
35
 
36
+ spliced_track.add_feature(Bio::Feature.new('spliced', 'join(34..52,109..183)'), :link =>'http://news.bbc.co.uk')
37
+ spliced_track.add_feature(Bio::Feature.new('spliced', 'complement(join(170..231,264..299,350..360,409..445))'), :label => 'anonymous')
38
+ spliced_track.add_feature(Bio::Feature.new('spliced', 'join(134..152,209..283)'))
39
+
40
+ directed_spliced_track.add_feature(Bio::Feature.new('cds', 'join(34..52,109..183)'), :link => 'http://www.vrtnieuws.net')
41
+ directed_spliced_track.add_feature(Bio::Feature.new('cds', 'complement(join(170..231,264..299,350..360,409..445))'), :link => 'http://bioinformatics.roslin.ac.uk')
42
+ directed_spliced_track.add_feature(Bio::Feature.new('cds', 'join(134..152,209..283)'))
43
+
44
+ box_track.add_feature(Bio::Feature.new('clone', '250..375'), :link => 'http://www.newsforge.com')
45
+ box_track.add_feature(Bio::Feature.new('clone', '54..124'), :link => 'http://www.thearkdb.org')
46
+ box_track.add_feature(Bio::Feature.new('clone', '100..449'), :link => 'http://www.google.com')
47
+
48
+ transcript1_utr5 = Bio::Feature.new('utr5', '100..150')
49
+ transcript1_cds = Bio::Feature.new('cds', 'join(150..225, 250..275, 310..330)')
50
+ transcript1_utr3 = Bio::Feature.new('utr3', '330..375')
51
+ transcript2_utr5 = Bio::Feature.new('utr5', 'complement(330..375)')
52
+ transcript2_cds = Bio::Feature.new('cds', 'complement(join(150..225, 250..275, 310..330))')
53
+ transcript2_utr3 = Bio::Feature.new('utr3', 'complement(100..150)')
54
+
55
+ transcript1 = Bio::Feature.new('transcript', 'join(100..150, 150..225, 250..275, 310..330, 330..375)', [], nil, [transcript1_utr5,transcript1_cds,transcript1_utr3])
56
+ transcript2 = Bio::Feature.new('transcript', 'complement(join(100..150, 150..225, 250..275, 310..330, 330..375))', [], nil, [transcript2_utr5,transcript2_cds,transcript2_utr3])
57
+
58
+ composite_track.add_feature(transcript1, :label => 'my_transcript')
59
+ composite_track.add_feature(transcript2, :label => 'my_reverse_transcript')
60
+ transcript_track.add_feature(transcript1, :label => 'my_transcript')
61
+ transcript_track.add_feature(transcript2, :label => 'my_reverse_transcript')
62
+
63
+ my_panel.draw('glyph_showcase.svg')
64
+ my_panel.format = :png
33
65
  my_panel.draw('glyph_showcase.png')
66
+ my_panel.format = :pdf
67
+ my_panel.draw('glyph_showcase.pdf')
68
+ my_panel.format = :ps
69
+ my_panel.draw('glyph_showcase.ps')
@@ -0,0 +1,19 @@
1
+ # Data from http://pfam.sanger.ac.uk/protein?id=Q8C6V9_MOUSE
2
+ require '../lib/bio-graphics'
3
+ my_panel = Bio::Graphics::Panel.new(700, :width => 600)
4
+
5
+ track = my_panel.add_track('Q8C6V9_MOUSE')
6
+ track.glyph = :generic
7
+
8
+ # First make the Bio::Feature objects and then create a Bio::Graphics feature
9
+ cimr_1 = Bio::Feature.new('CIMR', '3..142')
10
+ fn2 = Bio::Feature.new('fn2', '151..190')
11
+ cimr_2 = Bio::Feature.new('CIMR', '194..331')
12
+ cimr_3 = Bio::Feature.new('CIMR', '485..527')
13
+
14
+ track.add_feature(cimr_1, :label => 'CIMR', :colour => [0,1,0])
15
+ track.add_feature(fn2, :label => 'fn2', :colour => [1,0,0])
16
+ track.add_feature(cimr_2, :label => 'CIMR', :colour => [0,1,0])
17
+ track.add_feature(cimr_3, :label => 'CIMR', :colour => [0,1,0])
18
+
19
+ my_panel.draw('protein_domains.png')
@@ -0,0 +1,31 @@
1
+ require '../lib/bio-graphics'
2
+ my_panel = Bio::Graphics::Panel.new(700, :width => 600)
3
+
4
+ track = my_panel.add_track('transcripts')
5
+ track.glyph = :directed_spliced
6
+
7
+ # First make the Bio::Feature objects
8
+ # Arguments are:
9
+ # * type
10
+ # * location
11
+ # * qualifiers
12
+ # * parent
13
+ # * subfeatures
14
+ utr5 = Bio::Feature.new('utr', '100..150')
15
+ cds = Bio::Feature.new('cds', 'join(150..225, 250..275, 310..330)')
16
+ utr3 = Bio::Feature.new('utr', '330..375')
17
+
18
+ transcript = Bio::Feature.new('transcript', 'join(100..150, 150..225, 250..275, 310..330, 330..375)', [], nil, [utr5,cds,utr3])
19
+
20
+ # And then create the Bio::Graphics feature
21
+ # Arguments are:
22
+ # * Bio::Feature object
23
+ # * name
24
+ # * colour
25
+ # * glyphs
26
+ track.add_feature(transcript, :label => 'my_label_a', :glyph => { 'utr' => :line, 'cds' => :directed_spliced })
27
+
28
+ # Or do it all in one go, but then we can't do subfeatures.
29
+ track.add_feature(Bio::Feature.new('mrna', 'complement(join(120..250, 300..350, 375..390))'), :label => 'my_label_b', :colour => [0,1,0])
30
+
31
+ my_panel.draw('subfeatures.png')
@@ -0,0 +1,12 @@
1
+ module Bio::Graphics::Glyph
2
+ class Bio::Graphics::Glyph::CustomTestGlyphInFile < Bio::Graphics::Glyph::Common
3
+
4
+ def draw
5
+ (self.left_pixel..self.right_pixel).step(20) do |pos|
6
+ @feature_context.move_to(pos, 0)
7
+ @feature_context.line_to(pos, Bio::Graphics::FEATURE_HEIGHT)
8
+ @feature_context.close_path.stroke
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,32 @@
1
+ test scaffold
2
+ ARKSCA00000496 scaffold 1766280 3140306
3
+ ARKSCA00000495 scaffold 1454125 1756279
4
+ ARKMKR00050962 marker 1547565 1547116
5
+ ARKMKR00049743 marker 1467043 1467548
6
+ ARKMKR00049753 marker 1293787 1294437
7
+ ARKMKR00033347 marker 976330 976530
8
+ ARKMKR00049788 marker 959182 959941
9
+ ARKMKR00049746 marker 3030496 3031106
10
+ ARKCLN00574951 clone 1454125 1743183
11
+ ARKCLN00580755 clone 1115673 1332008
12
+ ARKCLN00734502 clone 2680312 2880020
13
+ ARKCLN00637391 clone 1291903 1444124
14
+ ARKCLN00733777 clone 554351 745744
15
+ ARKCLN00516431 clone 1766280 2053569
16
+ ARKCLN00734156 clone 1973620 2155335
17
+ ARKCLN00605941 clone 1576502 1756279
18
+ ARKCLN00608810 clone 672169 860914
19
+ ARKCLN00565213 clone 348808 418529
20
+ ARKCLN00679752 clone 2321244 2563972
21
+ ARKCLN00538485 clone 2851750 3078918
22
+ ARKCLN00581628 clone 2966855 3140306
23
+ ARKCLN00511832 clone 1034205 1213124
24
+ ARKCLN00734700 clone 2566852 2709684
25
+ ARKCLN00534126 clone 1043517 1290570
26
+ ARKCLN00734007 clone 951813 1154597
27
+ ARKCLN00733988 clone 140268 332409
28
+ ARKCLN00589095 clone 800155 1015201
29
+ ARKCLN00635737 clone 265756 445381
30
+ ARKCLN00573316 clone 2226636 2363631
31
+ ARKCLN00494906 clone 2130193 2314107
32
+ ARKCLN00515356 clone 81435 254456
@@ -0,0 +1,23 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../../lib/bio-graphics'
3
+
4
+ class TestExtensions < Test::Unit::TestCase
5
+ def test_range
6
+ r = (1..5)
7
+ assert_equal(1, r.begin)
8
+ assert_equal(5, r.end)
9
+ assert_equal(1, r.lend)
10
+ assert_equal(5, r.rend)
11
+ end
12
+
13
+ def test_string
14
+ snake = 'this_is_a_string'
15
+ assert_equal('ThisIsAString', snake.camel_case)
16
+
17
+ camel = 'ThisIsAnotherString'
18
+ assert_equal('this_is_another_string', camel.snake_case)
19
+
20
+ class_name = 'Bio::Graphics::Glyph::Generic'
21
+ assert(class_name.to_class == Bio::Graphics::Glyph::Generic)
22
+ end
23
+ end