bio 1.0.0 → 1.1.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 (340) hide show
  1. data/bin/bioruby +14 -122
  2. data/bin/br_biofetch.rb +2 -2
  3. data/bin/br_bioflat.rb +2 -2
  4. data/bin/br_biogetseq.rb +2 -2
  5. data/bin/br_pmfetch.rb +3 -3
  6. data/doc/Changes-0.7.rd +77 -0
  7. data/doc/KEGG_API.rd +523 -232
  8. data/doc/KEGG_API.rd.ja +529 -207
  9. data/doc/Tutorial.rd +48 -11
  10. data/lib/bio.rb +59 -6
  11. data/lib/bio/alignment.rb +713 -103
  12. data/lib/bio/appl/bl2seq/report.rb +2 -18
  13. data/lib/bio/appl/blast.rb +108 -91
  14. data/lib/bio/appl/blast/format0.rb +33 -18
  15. data/lib/bio/appl/blast/format8.rb +6 -20
  16. data/lib/bio/appl/blast/report.rb +293 -429
  17. data/lib/bio/appl/blast/rexml.rb +8 -22
  18. data/lib/bio/appl/blast/wublast.rb +21 -12
  19. data/lib/bio/appl/blast/xmlparser.rb +180 -183
  20. data/lib/bio/appl/blat/report.rb +127 -30
  21. data/lib/bio/appl/clustalw.rb +87 -59
  22. data/lib/bio/appl/clustalw/report.rb +20 -22
  23. data/lib/bio/appl/emboss.rb +113 -20
  24. data/lib/bio/appl/fasta.rb +173 -198
  25. data/lib/bio/appl/fasta/format10.rb +244 -347
  26. data/lib/bio/appl/gcg/msf.rb +212 -0
  27. data/lib/bio/appl/gcg/seq.rb +195 -0
  28. data/lib/bio/appl/genscan/report.rb +5 -23
  29. data/lib/bio/appl/hmmer.rb +8 -45
  30. data/lib/bio/appl/hmmer/report.rb +2 -20
  31. data/lib/bio/appl/iprscan/report.rb +374 -0
  32. data/lib/bio/appl/mafft.rb +87 -50
  33. data/lib/bio/appl/mafft/report.rb +151 -44
  34. data/lib/bio/appl/muscle.rb +52 -0
  35. data/lib/bio/appl/phylip/alignment.rb +129 -0
  36. data/lib/bio/appl/phylip/distance_matrix.rb +96 -0
  37. data/lib/bio/appl/probcons.rb +41 -0
  38. data/lib/bio/appl/psort.rb +89 -96
  39. data/lib/bio/appl/psort/report.rb +6 -22
  40. data/lib/bio/appl/pts1.rb +263 -0
  41. data/lib/bio/appl/sim4.rb +26 -36
  42. data/lib/bio/appl/sim4/report.rb +2 -18
  43. data/lib/bio/appl/sosui/report.rb +5 -20
  44. data/lib/bio/appl/spidey/report.rb +2 -2
  45. data/lib/bio/appl/targetp/report.rb +4 -20
  46. data/lib/bio/appl/tcoffee.rb +55 -0
  47. data/lib/bio/appl/tmhmm/report.rb +4 -20
  48. data/lib/bio/command.rb +235 -64
  49. data/lib/bio/data/aa.rb +21 -26
  50. data/lib/bio/data/codontable.rb +2 -20
  51. data/lib/bio/data/na.rb +19 -4
  52. data/lib/bio/db.rb +27 -12
  53. data/lib/bio/db/aaindex.rb +2 -20
  54. data/lib/bio/db/embl/common.rb +4 -21
  55. data/lib/bio/db/embl/embl.rb +33 -85
  56. data/lib/bio/db/embl/sptr.rb +612 -302
  57. data/lib/bio/db/embl/swissprot.rb +10 -29
  58. data/lib/bio/db/embl/trembl.rb +10 -29
  59. data/lib/bio/db/embl/uniprot.rb +10 -29
  60. data/lib/bio/db/fantom.rb +15 -20
  61. data/lib/bio/db/fasta.rb +3 -3
  62. data/lib/bio/db/genbank/common.rb +37 -46
  63. data/lib/bio/db/genbank/ddbj.rb +6 -18
  64. data/lib/bio/db/genbank/genbank.rb +47 -186
  65. data/lib/bio/db/genbank/genpept.rb +4 -17
  66. data/lib/bio/db/genbank/refseq.rb +4 -17
  67. data/lib/bio/db/gff.rb +103 -35
  68. data/lib/bio/db/go.rb +4 -20
  69. data/lib/bio/db/kegg/brite.rb +26 -36
  70. data/lib/bio/db/kegg/compound.rb +81 -85
  71. data/lib/bio/db/kegg/drug.rb +98 -0
  72. data/lib/bio/db/kegg/enzyme.rb +133 -110
  73. data/lib/bio/db/kegg/expression.rb +2 -20
  74. data/lib/bio/db/kegg/genes.rb +208 -238
  75. data/lib/bio/db/kegg/genome.rb +164 -285
  76. data/lib/bio/db/kegg/glycan.rb +114 -157
  77. data/lib/bio/db/kegg/keggtab.rb +242 -303
  78. data/lib/bio/db/kegg/kgml.rb +117 -160
  79. data/lib/bio/db/kegg/orthology.rb +112 -0
  80. data/lib/bio/db/kegg/reaction.rb +54 -69
  81. data/lib/bio/db/kegg/taxonomy.rb +331 -0
  82. data/lib/bio/db/lasergene.rb +209 -0
  83. data/lib/bio/db/litdb.rb +3 -27
  84. data/lib/bio/db/medline.rb +228 -249
  85. data/lib/bio/db/nbrf.rb +3 -3
  86. data/lib/bio/db/newick.rb +510 -0
  87. data/lib/bio/db/nexus.rb +1854 -0
  88. data/lib/bio/db/pdb.rb +5 -17
  89. data/lib/bio/db/pdb/atom.rb +2 -18
  90. data/lib/bio/db/pdb/chain.rb +2 -18
  91. data/lib/bio/db/pdb/chemicalcomponent.rb +2 -18
  92. data/lib/bio/db/pdb/model.rb +2 -18
  93. data/lib/bio/db/pdb/pdb.rb +73 -34
  94. data/lib/bio/db/pdb/residue.rb +4 -20
  95. data/lib/bio/db/pdb/utils.rb +2 -18
  96. data/lib/bio/db/prosite.rb +403 -422
  97. data/lib/bio/db/rebase.rb +84 -40
  98. data/lib/bio/db/soft.rb +404 -0
  99. data/lib/bio/db/transfac.rb +5 -17
  100. data/lib/bio/feature.rb +106 -52
  101. data/lib/bio/io/das.rb +32 -42
  102. data/lib/bio/io/dbget.rb +2 -20
  103. data/lib/bio/io/ddbjxml.rb +77 -138
  104. data/lib/bio/io/ebisoap.rb +158 -0
  105. data/lib/bio/io/ensembl.rb +229 -0
  106. data/lib/bio/io/fastacmd.rb +89 -82
  107. data/lib/bio/io/fetch.rb +163 -96
  108. data/lib/bio/io/flatfile.rb +170 -73
  109. data/lib/bio/io/flatfile/bdb.rb +3 -16
  110. data/lib/bio/io/flatfile/index.rb +2 -2
  111. data/lib/bio/io/flatfile/indexer.rb +3 -2
  112. data/lib/bio/io/higet.rb +12 -31
  113. data/lib/bio/io/keggapi.rb +210 -269
  114. data/lib/bio/io/ncbisoap.rb +155 -0
  115. data/lib/bio/io/pubmed.rb +169 -147
  116. data/lib/bio/io/registry.rb +4 -20
  117. data/lib/bio/io/soapwsdl.rb +43 -38
  118. data/lib/bio/io/sql.rb +242 -305
  119. data/lib/bio/location.rb +407 -285
  120. data/lib/bio/map.rb +410 -0
  121. data/lib/bio/pathway.rb +558 -695
  122. data/lib/bio/reference.rb +272 -75
  123. data/lib/bio/sequence.rb +255 -13
  124. data/lib/bio/sequence/aa.rb +71 -10
  125. data/lib/bio/sequence/common.rb +187 -33
  126. data/lib/bio/sequence/compat.rb +59 -4
  127. data/lib/bio/sequence/format.rb +54 -7
  128. data/lib/bio/sequence/generic.rb +3 -3
  129. data/lib/bio/sequence/na.rb +328 -26
  130. data/lib/bio/shell.rb +11 -4
  131. data/lib/bio/shell/core.rb +221 -160
  132. data/lib/bio/shell/demo.rb +18 -15
  133. data/lib/bio/shell/interface.rb +14 -12
  134. data/lib/bio/shell/irb.rb +95 -0
  135. data/lib/bio/shell/object.rb +45 -26
  136. data/lib/bio/shell/plugin/blast.rb +42 -0
  137. data/lib/bio/shell/plugin/codon.rb +22 -14
  138. data/lib/bio/shell/plugin/das.rb +58 -0
  139. data/lib/bio/shell/plugin/emboss.rb +2 -2
  140. data/lib/bio/shell/plugin/entry.rb +22 -11
  141. data/lib/bio/shell/plugin/flatfile.rb +2 -2
  142. data/lib/bio/shell/plugin/keggapi.rb +13 -6
  143. data/lib/bio/shell/plugin/midi.rb +4 -4
  144. data/lib/bio/shell/plugin/obda.rb +2 -2
  145. data/lib/bio/shell/plugin/psort.rb +56 -0
  146. data/lib/bio/shell/plugin/seq.rb +35 -8
  147. data/lib/bio/shell/plugin/soap.rb +87 -0
  148. data/lib/bio/shell/rails/vendor/plugins/generators/bioruby/bioruby_generator.rb +29 -0
  149. data/lib/bio/shell/rails/vendor/plugins/generators/bioruby/templates/_classes.rhtml +4 -0
  150. data/lib/bio/shell/rails/vendor/plugins/generators/bioruby/templates/_log.rhtml +27 -0
  151. data/lib/bio/shell/rails/vendor/plugins/generators/bioruby/templates/_methods.rhtml +11 -0
  152. data/lib/bio/shell/rails/vendor/plugins/generators/bioruby/templates/_modules.rhtml +4 -0
  153. data/lib/bio/shell/rails/vendor/plugins/generators/bioruby/templates/_variables.rhtml +7 -0
  154. data/lib/bio/shell/rails/vendor/plugins/generators/bioruby/templates/bioruby-bg.gif +0 -0
  155. data/lib/bio/shell/rails/vendor/plugins/generators/bioruby/templates/bioruby-console.png +0 -0
  156. data/lib/bio/shell/rails/{public/images/icon.png → vendor/plugins/generators/bioruby/templates/bioruby-gem.png} +0 -0
  157. data/lib/bio/shell/rails/vendor/plugins/generators/bioruby/templates/bioruby-link.gif +0 -0
  158. data/lib/bio/shell/rails/vendor/plugins/generators/bioruby/templates/bioruby.css +369 -0
  159. data/lib/bio/shell/rails/vendor/plugins/generators/bioruby/templates/bioruby.rhtml +47 -0
  160. data/lib/bio/shell/rails/vendor/plugins/generators/bioruby/templates/bioruby_controller.rb +144 -0
  161. data/lib/bio/shell/rails/vendor/plugins/generators/bioruby/templates/bioruby_helper.rb +47 -0
  162. data/lib/bio/shell/rails/vendor/plugins/generators/bioruby/templates/commands.rhtml +8 -0
  163. data/lib/bio/shell/rails/vendor/plugins/generators/bioruby/templates/history.rhtml +10 -0
  164. data/lib/bio/shell/rails/vendor/plugins/generators/bioruby/templates/index.rhtml +22 -0
  165. data/lib/bio/shell/script.rb +25 -0
  166. data/lib/bio/shell/setup.rb +109 -0
  167. data/lib/bio/shell/web.rb +70 -58
  168. data/lib/bio/tree.rb +850 -0
  169. data/lib/bio/util/color_scheme.rb +84 -107
  170. data/lib/bio/util/color_scheme/buried.rb +5 -24
  171. data/lib/bio/util/color_scheme/helix.rb +5 -24
  172. data/lib/bio/util/color_scheme/hydropathy.rb +5 -24
  173. data/lib/bio/util/color_scheme/nucleotide.rb +5 -24
  174. data/lib/bio/util/color_scheme/strand.rb +5 -24
  175. data/lib/bio/util/color_scheme/taylor.rb +5 -24
  176. data/lib/bio/util/color_scheme/turn.rb +5 -24
  177. data/lib/bio/util/color_scheme/zappo.rb +5 -24
  178. data/lib/bio/util/contingency_table.rb +70 -43
  179. data/lib/bio/util/restriction_enzyme.rb +228 -0
  180. data/lib/bio/util/restriction_enzyme/analysis.rb +249 -0
  181. data/lib/bio/util/restriction_enzyme/analysis_basic.rb +217 -0
  182. data/lib/bio/util/restriction_enzyme/cut_symbol.rb +107 -0
  183. data/lib/bio/util/restriction_enzyme/double_stranded.rb +321 -0
  184. data/lib/bio/util/restriction_enzyme/double_stranded/aligned_strands.rb +130 -0
  185. data/lib/bio/util/restriction_enzyme/double_stranded/cut_location_pair.rb +103 -0
  186. data/lib/bio/util/restriction_enzyme/double_stranded/cut_location_pair_in_enzyme_notation.rb +38 -0
  187. data/lib/bio/util/restriction_enzyme/double_stranded/cut_locations.rb +76 -0
  188. data/lib/bio/util/restriction_enzyme/double_stranded/cut_locations_in_enzyme_notation.rb +107 -0
  189. data/lib/bio/util/restriction_enzyme/enzymes.yaml +7061 -0
  190. data/lib/bio/util/restriction_enzyme/range/cut_range.rb +24 -0
  191. data/lib/bio/util/restriction_enzyme/range/cut_ranges.rb +47 -0
  192. data/lib/bio/util/restriction_enzyme/range/horizontal_cut_range.rb +67 -0
  193. data/lib/bio/util/restriction_enzyme/range/sequence_range.rb +257 -0
  194. data/lib/bio/util/restriction_enzyme/range/sequence_range/calculated_cuts.rb +242 -0
  195. data/lib/bio/util/restriction_enzyme/range/sequence_range/fragment.rb +51 -0
  196. data/lib/bio/util/restriction_enzyme/range/sequence_range/fragments.rb +41 -0
  197. data/lib/bio/util/restriction_enzyme/range/vertical_cut_range.rb +77 -0
  198. data/lib/bio/util/restriction_enzyme/single_strand.rb +199 -0
  199. data/lib/bio/util/restriction_enzyme/single_strand/cut_locations_in_enzyme_notation.rb +135 -0
  200. data/lib/bio/util/restriction_enzyme/single_strand_complement.rb +23 -0
  201. data/lib/bio/util/restriction_enzyme/string_formatting.rb +111 -0
  202. data/lib/bio/util/sirna.rb +4 -22
  203. data/sample/color_scheme_na.rb +4 -12
  204. data/sample/enzymes.rb +78 -0
  205. data/sample/goslim.rb +5 -13
  206. data/sample/psortplot_html.rb +4 -12
  207. data/test/data/blast/2.2.15.blastp.m7 +876 -0
  208. data/test/data/embl/AB090716.embl.rel89 +63 -0
  209. data/test/data/fasta/example1.txt +75 -0
  210. data/test/data/fasta/example2.txt +21 -0
  211. data/test/data/iprscan/merged.raw +32 -0
  212. data/test/data/iprscan/merged.txt +74 -0
  213. data/test/data/soft/GDS100_partial.soft +92 -0
  214. data/test/data/soft/GSE3457_family_partial.soft +874 -0
  215. data/test/functional/bio/io/test_ensembl.rb +103 -0
  216. data/test/functional/bio/io/test_soapwsdl.rb +5 -17
  217. data/test/unit/bio/appl/bl2seq/test_report.rb +2 -2
  218. data/test/unit/bio/appl/blast/test_report.rb +3 -16
  219. data/test/unit/bio/appl/blast/test_xmlparser.rb +4 -16
  220. data/test/unit/bio/appl/genscan/test_report.rb +3 -16
  221. data/test/unit/bio/appl/hmmer/test_report.rb +3 -16
  222. data/test/unit/bio/appl/iprscan/test_report.rb +338 -0
  223. data/test/unit/bio/appl/mafft/test_report.rb +63 -0
  224. data/test/unit/bio/appl/sosui/test_report.rb +3 -16
  225. data/test/unit/bio/appl/targetp/test_report.rb +3 -16
  226. data/test/unit/bio/appl/test_blast.rb +3 -16
  227. data/test/unit/bio/appl/test_fasta.rb +4 -16
  228. data/test/unit/bio/appl/test_pts1.rb +140 -0
  229. data/test/unit/bio/appl/tmhmm/test_report.rb +3 -16
  230. data/test/unit/bio/data/test_aa.rb +4 -17
  231. data/test/unit/bio/data/test_codontable.rb +3 -16
  232. data/test/unit/bio/data/test_na.rb +3 -3
  233. data/test/unit/bio/db/embl/test_common.rb +3 -16
  234. data/test/unit/bio/db/embl/test_embl.rb +3 -16
  235. data/test/unit/bio/db/embl/test_embl_rel89.rb +219 -0
  236. data/test/unit/bio/db/embl/test_sptr.rb +1548 -41
  237. data/test/unit/bio/db/embl/test_uniprot.rb +3 -16
  238. data/test/unit/bio/db/kegg/test_genes.rb +3 -16
  239. data/test/unit/bio/db/pdb/test_pdb.rb +7 -24
  240. data/test/unit/bio/db/test_aaindex.rb +2 -2
  241. data/test/unit/bio/db/test_fasta.rb +3 -16
  242. data/test/unit/bio/db/test_gff.rb +3 -16
  243. data/test/unit/bio/db/test_lasergene.rb +95 -0
  244. data/test/unit/bio/db/test_newick.rb +56 -0
  245. data/test/unit/bio/db/test_nexus.rb +360 -0
  246. data/test/unit/bio/db/test_prosite.rb +5 -18
  247. data/test/unit/bio/db/test_rebase.rb +11 -25
  248. data/test/unit/bio/db/test_soft.rb +138 -0
  249. data/test/unit/bio/io/test_ddbjxml.rb +5 -17
  250. data/test/unit/bio/io/test_ensembl.rb +109 -0
  251. data/test/unit/bio/io/test_fastacmd.rb +3 -16
  252. data/test/unit/bio/io/test_flatfile.rb +237 -0
  253. data/test/unit/bio/io/test_soapwsdl.rb +4 -17
  254. data/test/unit/bio/sequence/test_aa.rb +3 -3
  255. data/test/unit/bio/sequence/test_common.rb +3 -16
  256. data/test/unit/bio/sequence/test_compat.rb +3 -16
  257. data/test/unit/bio/sequence/test_na.rb +29 -3
  258. data/test/unit/bio/shell/plugin/test_seq.rb +8 -8
  259. data/test/unit/bio/test_alignment.rb +16 -27
  260. data/test/unit/bio/test_command.rb +242 -25
  261. data/test/unit/bio/test_db.rb +3 -16
  262. data/test/unit/bio/test_feature.rb +4 -16
  263. data/test/unit/bio/test_location.rb +4 -16
  264. data/test/unit/bio/test_map.rb +230 -0
  265. data/test/unit/bio/test_pathway.rb +4 -16
  266. data/test/unit/bio/test_reference.rb +2 -2
  267. data/test/unit/bio/test_sequence.rb +7 -19
  268. data/test/unit/bio/test_shell.rb +3 -16
  269. data/test/unit/bio/test_tree.rb +593 -0
  270. data/test/unit/bio/util/restriction_enzyme/analysis/test_calculated_cuts.rb +299 -0
  271. data/test/unit/bio/util/restriction_enzyme/analysis/test_cut_ranges.rb +103 -0
  272. data/test/unit/bio/util/restriction_enzyme/analysis/test_sequence_range.rb +240 -0
  273. data/test/unit/bio/util/restriction_enzyme/double_stranded/test_aligned_strands.rb +100 -0
  274. data/test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_location_pair.rb +75 -0
  275. data/test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_location_pair_in_enzyme_notation.rb +73 -0
  276. data/test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_locations.rb +53 -0
  277. data/test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_locations_in_enzyme_notation.rb +104 -0
  278. data/test/unit/bio/util/restriction_enzyme/single_strand/test_cut_locations_in_enzyme_notation.rb +83 -0
  279. data/test/unit/bio/util/restriction_enzyme/test_analysis.rb +246 -0
  280. data/test/unit/bio/util/restriction_enzyme/test_cut_symbol.rb +44 -0
  281. data/test/unit/bio/util/restriction_enzyme/test_double_stranded.rb +115 -0
  282. data/test/unit/bio/util/restriction_enzyme/test_single_strand.rb +147 -0
  283. data/test/unit/bio/util/restriction_enzyme/test_single_strand_complement.rb +147 -0
  284. data/test/unit/bio/util/restriction_enzyme/test_string_formatting.rb +60 -0
  285. data/test/unit/bio/util/test_color_scheme.rb +6 -18
  286. data/test/unit/bio/util/test_contingency_table.rb +6 -18
  287. data/test/unit/bio/util/test_restriction_enzyme.rb +42 -0
  288. data/test/unit/bio/util/test_sirna.rb +3 -16
  289. metadata +228 -169
  290. data/doc/BioRuby.rd.ja +0 -225
  291. data/doc/Design.rd.ja +0 -341
  292. data/doc/TODO.rd.ja +0 -138
  293. data/lib/bio/appl/fasta/format6.rb +0 -37
  294. data/lib/bio/db/kegg/cell.rb +0 -88
  295. data/lib/bio/db/kegg/ko.rb +0 -178
  296. data/lib/bio/shell/rails/Rakefile +0 -10
  297. data/lib/bio/shell/rails/app/controllers/application.rb +0 -4
  298. data/lib/bio/shell/rails/app/controllers/shell_controller.rb +0 -94
  299. data/lib/bio/shell/rails/app/helpers/application_helper.rb +0 -3
  300. data/lib/bio/shell/rails/app/models/shell_connection.rb +0 -30
  301. data/lib/bio/shell/rails/app/views/layouts/shell.rhtml +0 -37
  302. data/lib/bio/shell/rails/app/views/shell/history.rhtml +0 -5
  303. data/lib/bio/shell/rails/app/views/shell/index.rhtml +0 -2
  304. data/lib/bio/shell/rails/app/views/shell/show.rhtml +0 -13
  305. data/lib/bio/shell/rails/config/boot.rb +0 -19
  306. data/lib/bio/shell/rails/config/database.yml +0 -85
  307. data/lib/bio/shell/rails/config/environment.rb +0 -53
  308. data/lib/bio/shell/rails/config/environments/development.rb +0 -19
  309. data/lib/bio/shell/rails/config/environments/production.rb +0 -19
  310. data/lib/bio/shell/rails/config/environments/test.rb +0 -19
  311. data/lib/bio/shell/rails/config/routes.rb +0 -19
  312. data/lib/bio/shell/rails/doc/README_FOR_APP +0 -2
  313. data/lib/bio/shell/rails/public/404.html +0 -8
  314. data/lib/bio/shell/rails/public/500.html +0 -8
  315. data/lib/bio/shell/rails/public/dispatch.cgi +0 -10
  316. data/lib/bio/shell/rails/public/dispatch.fcgi +0 -24
  317. data/lib/bio/shell/rails/public/dispatch.rb +0 -10
  318. data/lib/bio/shell/rails/public/favicon.ico +0 -0
  319. data/lib/bio/shell/rails/public/images/rails.png +0 -0
  320. data/lib/bio/shell/rails/public/index.html +0 -277
  321. data/lib/bio/shell/rails/public/javascripts/controls.js +0 -750
  322. data/lib/bio/shell/rails/public/javascripts/dragdrop.js +0 -584
  323. data/lib/bio/shell/rails/public/javascripts/effects.js +0 -854
  324. data/lib/bio/shell/rails/public/javascripts/prototype.js +0 -1785
  325. data/lib/bio/shell/rails/public/robots.txt +0 -1
  326. data/lib/bio/shell/rails/public/stylesheets/main.css +0 -187
  327. data/lib/bio/shell/rails/script/about +0 -3
  328. data/lib/bio/shell/rails/script/breakpointer +0 -3
  329. data/lib/bio/shell/rails/script/console +0 -3
  330. data/lib/bio/shell/rails/script/destroy +0 -3
  331. data/lib/bio/shell/rails/script/generate +0 -3
  332. data/lib/bio/shell/rails/script/performance/benchmarker +0 -3
  333. data/lib/bio/shell/rails/script/performance/profiler +0 -3
  334. data/lib/bio/shell/rails/script/plugin +0 -3
  335. data/lib/bio/shell/rails/script/process/reaper +0 -3
  336. data/lib/bio/shell/rails/script/process/spawner +0 -3
  337. data/lib/bio/shell/rails/script/process/spinner +0 -3
  338. data/lib/bio/shell/rails/script/runner +0 -3
  339. data/lib/bio/shell/rails/script/server +0 -42
  340. data/lib/bio/shell/rails/test/test_helper.rb +0 -28
@@ -0,0 +1,47 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5
+ <title>BioRuby shell on Rails</title>
6
+ <%= stylesheet_link_tag "bioruby.css" %>
7
+ <%= javascript_include_tag :defaults %>
8
+ </head>
9
+
10
+ <body>
11
+
12
+ <div id="content">
13
+
14
+ <div id="side">
15
+ <div class="title">Project</div>
16
+ <ul>
17
+ <li><%= link_to "#{File.basename(project_workdir)}", "file://#{project_workdir}" %>
18
+ </ul>
19
+
20
+ <div class="title">Functions</div>
21
+ <ul>
22
+ <li><%= link_to "Console", :action => "index" %></li>
23
+ <li><%= link_to "History", :action => "history" %></li>
24
+ <li><%= link_to "Commands", :action => "commands" %></li>
25
+ </ul>
26
+
27
+ <div class="title">Local variables</div>
28
+ <%= render :partial => "variables" %>
29
+
30
+ <br>
31
+ <a href="http://bioruby.org/"><img src="/images/bioruby-link.gif" border=0></a>
32
+ </div><!-- side -->
33
+
34
+ <div id="title">
35
+ <p class="titletop">BioRuby shell on Rails</p>
36
+ <p class="titlesub">Web interface for the BioRuby library</p>
37
+ </div><!-- title -->
38
+
39
+ <div id="main">
40
+ <%= yield %>
41
+ </div><!-- main -->
42
+
43
+ </div><!-- content -->
44
+
45
+ </body>
46
+
47
+ </html>
@@ -0,0 +1,144 @@
1
+ class BiorubyController < ApplicationController
2
+
3
+ HIDE_METHODS = Object.methods + [ "singleton_method_added" ]
4
+
5
+ HIDE_MODULES = [
6
+ Base64::Deprecated, Base64, PP::ObjectMixin, Bio::Shell,
7
+ ]
8
+ HIDE_MODULES << WEBrick if defined?(WEBrick)
9
+
10
+ HIDE_VARIABLES = [
11
+ "_", "irb", "_erbout",
12
+ ]
13
+
14
+ SECURITY_NOTICE = "For security purposes, this functionality is only available to local requests."
15
+
16
+ def index
17
+ unless local_request?
18
+ flash[:notice] = SECURITY_NOTICE
19
+ end
20
+ end
21
+
22
+ def evaluate
23
+ if local_request?
24
+ begin
25
+ @script = params[:script].strip
26
+
27
+ # write out to history
28
+ Bio::Shell.store_history(@script)
29
+
30
+ # evaluate ruby script
31
+ @result = eval(@script, Bio::Shell.cache[:binding])
32
+
33
+ # *TODO* need to handle with output of print/puts/p/pp etc. here
34
+ @output = nil
35
+ rescue
36
+ @result = $!
37
+ @output = nil
38
+ end
39
+ else
40
+ @result = SECURITY_NOTICE
41
+ @output = nil
42
+ end
43
+
44
+ @number = Bio::Shell.cache[:results].store(@script, @result, @output)
45
+
46
+ render :update do |page|
47
+ render_log(page)
48
+ end
49
+ end
50
+
51
+ def list_methods
52
+ number = params[:number].to_i
53
+
54
+ script, result, output = Bio::Shell.cache[:results].restore(number)
55
+ @class = result.class
56
+ @methods = (result.methods - HIDE_METHODS).sort
57
+
58
+ render :update do |page|
59
+ page.replace_html "methods_#{number}", :partial => "methods"
60
+ page.visual_effect :toggle_blind, "methods_#{number}", :duration => 0.5
61
+ end
62
+ end
63
+
64
+ def list_classes
65
+ number = params[:number].to_i
66
+
67
+ script, result, output = Bio::Shell.cache[:results].restore(number)
68
+ class_name = result.class
69
+ @class = class_name
70
+ @classes = []
71
+ loop do
72
+ @classes.unshift(class_name)
73
+ if class_name == Object
74
+ break
75
+ else
76
+ class_name = class_name.superclass
77
+ end
78
+ end
79
+
80
+ render :update do |page|
81
+ page.replace_html "classes_#{number}", :partial => "classes"
82
+ page.visual_effect :toggle_blind, "classes_#{number}", :duration => 0.5
83
+ end
84
+ end
85
+
86
+ def list_modules
87
+ number = params[:number].to_i
88
+
89
+ script, result, output = Bio::Shell.cache[:results].restore(number)
90
+ @class = result.class
91
+ @modules = result.class.included_modules - HIDE_MODULES
92
+
93
+ render :update do |page|
94
+ page.replace_html "modules_#{number}", :partial => "modules"
95
+ page.visual_effect :toggle_blind, "modules_#{number}", :duration => 0.5
96
+ end
97
+ end
98
+
99
+ def reload_script
100
+ number = params[:number].to_i
101
+
102
+ script, result, output = Bio::Shell.cache[:results].restore(number)
103
+
104
+ render :update do |page|
105
+ page.replace_html :script, script
106
+ end
107
+ end
108
+
109
+ def results
110
+ if Bio::Shell.cache[:results].number > 0
111
+ limit = params[:limit].to_i
112
+ max_num = Bio::Shell.cache[:results].number
113
+ min_num = [ max_num - limit + 1, 1 ].max
114
+ min_num = 1 if limit == 0
115
+
116
+ render :update do |page|
117
+ # delete all existing results in the current DOM for clean up
118
+ page.select(".log").each do |element|
119
+ #page.hide element
120
+ page.remove element
121
+ end
122
+
123
+ # add selected results to the current DOM
124
+ min_num.upto(max_num) do |@number|
125
+ #page.show "log_#{@number}"
126
+ @script, @result, @output = Bio::Shell.cache[:results].restore(@number)
127
+ if @script
128
+ render_log(page)
129
+ end
130
+ end
131
+ end
132
+ end
133
+ end
134
+
135
+ def commands
136
+ @bioruby_commands = Bio::Shell.private_instance_methods.sort
137
+ end
138
+
139
+ def history
140
+ @history = File.readlines(Bio::Shell.history_file)
141
+ end
142
+
143
+ end
144
+
@@ -0,0 +1,47 @@
1
+ module BiorubyHelper
2
+
3
+ include Bio::Shell
4
+
5
+ def project_workdir
6
+ if Bio::Shell.cache[:savedir].match(/\.bioruby$/)
7
+ Bio::Shell.cache[:workdir]
8
+ else
9
+ Bio::Shell.cache[:savedir]
10
+ end
11
+ end
12
+
13
+ def have_results
14
+ Bio::Shell.cache[:results].number > 0
15
+ end
16
+
17
+ def local_variables
18
+ eval("local_variables", Bio::Shell.cache[:binding]) -
19
+ BiorubyController::HIDE_VARIABLES
20
+ end
21
+
22
+ def render_log(page)
23
+ page.insert_html :top, :logs, :partial => "log"
24
+ page.replace_html "variables", :partial => "variables"
25
+ page.hide "methods_#{@number}"
26
+ page.hide "classes_#{@number}"
27
+ page.hide "modules_#{@number}"
28
+ end
29
+
30
+ def reference_link(class_or_module)
31
+ name = class_or_module.to_s
32
+ case name
33
+ when /Bio::(.+)/
34
+ path = $1.split('::').join('/')
35
+ url = "http://bioruby.org/rdoc/classes/Bio/#{path}.html"
36
+ when /Chem::(.+)/
37
+ path = $1.split('::').join('/')
38
+ url = "http://chemruby.org/rdoc/classes/Chem/#{path}.html"
39
+ else
40
+ path = name.split('::').join('/')
41
+ url = "http://www.ruby-doc.org/core/classes/#{path}.html"
42
+ end
43
+ return "<a href='#{url}'>#{name}</a>"
44
+ end
45
+
46
+ end
47
+
@@ -0,0 +1,8 @@
1
+ <div id="command">
2
+ <h2>BioRuby shell commands</h2>
3
+ <ul>
4
+ <% @bioruby_commands.each do |cmd| %>
5
+ <li><%= cmd %></li>
6
+ <% end %>
7
+ </ul>
8
+ </div>
@@ -0,0 +1,10 @@
1
+ <div id="history">
2
+ <h2>Command history</h2>
3
+ <% @history.each do |line| %>
4
+ <% if line[/^# /] %>
5
+ <div class="histtime"><%= line %></div>
6
+ <% else %>
7
+ <div class="histline"><%= line %></div>
8
+ <% end %>
9
+ <% end %>
10
+ </div>
@@ -0,0 +1,22 @@
1
+ <div id="console">
2
+ <%- if flash[:notice] -%>
3
+ <div id="notice"><p><%= flash[:notice] %></p></div><br>
4
+ <%- end -%>
5
+ <%= form_remote_tag(:url => {:action => "evaluate"}, :position => "top") %>
6
+ <b>BioRuby script:</b>
7
+ <textarea id="script" name="script" rows=10 cols=80></textarea><br>
8
+ <input type="submit" value="Evaluate">
9
+ <input type="reset" value="Clear">
10
+ &nbsp;&nbsp;
11
+ Show [
12
+ <%= link_to_remote "All", :url => {:action => "results", :limit => 0} %> |
13
+ <%= link_to_remote "Last 5", :url => {:action => "results", :limit => 5} %> |
14
+ <%= link_to_remote "Previous", :url => {:action => "results", :limit => 1} %>
15
+ ] or
16
+ <%= link_to "Hide", :action => "index" %>
17
+ results<br>
18
+ <%= end_form_tag %>
19
+ </div>
20
+ <div id="logs">
21
+ </div>
22
+
@@ -0,0 +1,25 @@
1
+ #
2
+ # = bio/shell/script.rb - script mode for the BioRuby shell
3
+ #
4
+ # Copyright:: Copyright (C) 2006
5
+ # Toshiaki Katayama <k@bioruby.org>
6
+ # License:: The Ruby License
7
+ #
8
+ # $Id: script.rb,v 1.3 2007/04/05 23:35:41 trevor Exp $
9
+ #
10
+
11
+ module Bio::Shell
12
+
13
+ class Script
14
+
15
+ def initialize(script)
16
+ Bio::Shell.cache[:binding] = TOPLEVEL_BINDING
17
+ Bio::Shell.load_session
18
+ eval(File.read(script), TOPLEVEL_BINDING)
19
+ exit
20
+ end
21
+
22
+ end # Script
23
+
24
+ end
25
+
@@ -0,0 +1,109 @@
1
+ #
2
+ # = bio/shell/setup.rb - setup initial environment for the BioRuby shell
3
+ #
4
+ # Copyright:: Copyright (C) 2006
5
+ # Toshiaki Katayama <k@bioruby.org>
6
+ # License:: The Ruby License
7
+ #
8
+ # $Id: setup.rb,v 1.8 2007/06/28 11:21:40 k Exp $
9
+ #
10
+
11
+ require 'getoptlong'
12
+
13
+ class Bio::Shell::Setup
14
+
15
+ def initialize
16
+ check_ruby_version
17
+
18
+ # command line options
19
+ getoptlong
20
+
21
+ # setup working directory
22
+ savedir = setup_savedir
23
+
24
+ # load configuration and plugins
25
+ Bio::Shell.configure(savedir)
26
+
27
+ # set default to irb mode
28
+ Bio::Shell.cache[:mode] = @mode || :irb
29
+
30
+ case Bio::Shell.cache[:mode]
31
+ when :web
32
+ # setup rails server
33
+ Bio::Shell::Web.new
34
+ when :irb
35
+ # setup irb server
36
+ Bio::Shell::Irb.new
37
+ when :script
38
+ # run bioruby shell script
39
+ Bio::Shell::Script.new(@script)
40
+ end
41
+ end
42
+
43
+ def check_ruby_version
44
+ if RUBY_VERSION < "1.8.2"
45
+ raise "BioRuby shell runs on Ruby version >= 1.8.2"
46
+ end
47
+ end
48
+
49
+ # command line argument (working directory or bioruby shell script file)
50
+ def getoptlong
51
+ opts = GetoptLong.new
52
+ opts.set_options(
53
+ [ '--rails', '-r', GetoptLong::NO_ARGUMENT ],
54
+ [ '--web', '-w', GetoptLong::NO_ARGUMENT ],
55
+ [ '--console', '-c', GetoptLong::NO_ARGUMENT ],
56
+ [ '--irb', '-i', GetoptLong::NO_ARGUMENT ]
57
+ )
58
+ opts.each_option do |opt, arg|
59
+ case opt
60
+ when /--rails/, /--web/
61
+ @mode = :web
62
+ when /--console/, /--irb/
63
+ @mode = :irb
64
+ end
65
+ end
66
+ end
67
+
68
+ def setup_savedir
69
+ arg = ARGV.shift
70
+
71
+ # Options after the '--' argument are not parsed by GetoptLong and
72
+ # are passed to irb or rails. This hack preserve the first option
73
+ # when working directory of the project is not given.
74
+ if arg and arg[/^-/]
75
+ ARGV.unshift arg
76
+ arg = nil
77
+ end
78
+
79
+ if arg.nil?
80
+ # run in the current directory
81
+ if File.exist?(Bio::Shell::Core::HISTORY)
82
+ savedir = Dir.pwd
83
+ else
84
+ savedir = File.join(ENV['HOME'].to_s, ".bioruby")
85
+ install_savedir(savedir)
86
+ end
87
+ elsif File.file?(arg)
88
+ # run file as a bioruby shell script
89
+ savedir = File.join(File.dirname(arg), "..")
90
+ @script = arg
91
+ @mode = :script
92
+ else
93
+ # run in new or existing directory
94
+ if arg[/^#{File::SEPARATOR}/]
95
+ savedir = arg
96
+ else
97
+ savedir = File.join(Dir.pwd, arg)
98
+ end
99
+ install_savedir(savedir)
100
+ end
101
+
102
+ return savedir
103
+ end
104
+
105
+ def install_savedir(savedir)
106
+ FileUtils.makedirs(savedir)
107
+ end
108
+
109
+ end # Setup
@@ -4,86 +4,98 @@
4
4
  # Copyright:: Copyright (C) 2006
5
5
  # Nobuya Tanaka <t@chemruby.org>,
6
6
  # Toshiaki Katayama <k@bioruby.org>
7
- # License:: Ruby's
7
+ # License:: The Ruby License
8
8
  #
9
- # $Id: web.rb,v 1.1 2006/02/27 09:22:42 k Exp $
9
+ # $Id: web.rb,v 1.5 2007/06/26 08:38:38 k Exp $
10
10
  #
11
11
 
12
12
 
13
13
  module Bio::Shell
14
14
 
15
- private
15
+ class Web
16
16
 
17
- def rails_directory_setup
18
- server = "script/server"
19
- unless File.exists?(server)
20
- require 'fileutils'
21
- basedir = File.dirname(__FILE__)
22
- print "Copying web server files ... "
23
- FileUtils.cp_r("#{basedir}/rails/.", ".")
24
- puts "done"
17
+ def initialize
18
+ Bio::Shell.cache[:binding] = binding
19
+ Bio::Shell.cache[:results] ||= Results.new
20
+ install_rails
21
+ setup_rails
22
+ start_rails
25
23
  end
26
- end
27
24
 
28
- def rails_server_setup
29
- require 'open3'
30
- $web_server = Open3.popen3(server)
25
+ private
31
26
 
32
- $web_error_log = File.open("log/web-error.log", "a")
33
- $web_server[2].reopen($web_error_log)
27
+ def setup_rails
28
+ puts
29
+ puts ">>>"
30
+ puts ">>> open http://localhost:3000/bioruby"
31
+ puts ">>>"
32
+ puts
33
+ puts '(You can change the port number by adding "-- -p 4000" option)'
34
+ puts
35
+ end
34
36
 
35
- while line = $web_server[1].gets
36
- if line[/druby:\/\/localhost/]
37
- uri = line.chomp
38
- puts uri if $DEBUG
39
- break
37
+ def install_rails
38
+ savedir = Bio::Shell.cache[:savedir]
39
+ path = File.join(savedir, "script", "generate")
40
+ unless File.exist?(path)
41
+ puts "Installing Rails application for BioRuby shell ... "
42
+ system("rails #{savedir}")
43
+ puts "done"
44
+ end
45
+ path = File.join(savedir, "app", "controllers", "bioruby_controller.rb")
46
+ unless File.exist?(path)
47
+ basedir = File.dirname(__FILE__)
48
+ puts "Installing Rails plugin for BioRuby shell ... "
49
+ FileUtils.cp_r("#{basedir}/rails/.", savedir)
50
+ Dir.chdir(savedir) do
51
+ system("./script/generate bioruby shell")
52
+ end
53
+ puts "done"
40
54
  end
41
55
  end
42
56
 
43
- $web_access_log = File.open("log/web-access.log", "a")
44
- $web_server[1].reopen($web_access_log)
45
-
46
- return uri
47
- end
57
+ def start_rails
58
+ begin
59
+ Bio::Shell.cache[:rails] = Thread.new do
60
+ Dir.chdir(Bio::Shell.cache[:savedir]) do
61
+ require './config/boot'
62
+ require 'commands/server'
63
+ end
64
+ end
65
+ end
66
+ end
48
67
 
49
- def web
50
- return if $web_server
68
+ class Results
69
+ attr_accessor :number, :script, :result, :output
51
70
 
52
- require 'drb/drb'
53
- # $SAFE = 1 # disable eval() and friends
71
+ def initialize
72
+ @number = 0
73
+ @script = []
74
+ @result = []
75
+ @output = []
76
+ end
54
77
 
55
- rails_directory_setup
56
- #uri = rails_server_setup
57
- uri = 'druby://localhost:81064' # baioroji-
78
+ def store(script, result, output)
79
+ @number += 1
80
+ @script[@number] = script
81
+ @result[@number] = result
82
+ @output[@number] = output
83
+ return @number
84
+ end
58
85
 
59
- $drb_server = DRbObject.new_with_uri(uri)
60
- $drb_server.puts_remote("Connected")
86
+ def restore(number)
87
+ return @script[number], @result[number], @output[number]
88
+ end
89
+ end
61
90
 
62
- puts "Connected to server #{uri}"
63
- puts "Open http://localhost:3000/shell/"
91
+ end
64
92
 
65
- io = IRB.conf[:MAIN_CONTEXT].io
93
+ private
66
94
 
67
- io.class.class_eval do
68
- alias_method :shell_original_gets, :gets
69
- end
95
+ # *TODO* stop irb and start rails?
96
+ #def web
97
+ #end
70
98
 
71
- def io.gets
72
- bind = IRB.conf[:MAIN_CONTEXT].workspace.binding
73
- vars = eval("local_variables", bind)
74
- vars.each do |var|
75
- next if var == "_"
76
- if val = eval("#{var}", bind)
77
- $drb_server[var] = val
78
- else
79
- $drb_server.delete(var)
80
- end
81
- end
82
- line = shell_original_gets
83
- line
84
- end
85
- end
86
-
87
99
  end
88
100
 
89
101