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,51 @@
1
+ #
2
+ # bio/util/restriction_enzyme/range/sequence_range/fragment.rb -
3
+ #
4
+ # Author:: Trevor Wennblom <mailto:trevor@corevx.com>
5
+ # Copyright:: Copyright (c) 2005-2007 Midwinter Laboratories, LLC (http://midwinterlabs.com)
6
+ # License:: The Ruby License
7
+ #
8
+ # $Id: fragment.rb,v 1.6 2007/07/16 19:28:48 k Exp $
9
+ #
10
+
11
+ require 'bio/util/restriction_enzyme'
12
+
13
+ module Bio
14
+ class RestrictionEnzyme
15
+ class Range
16
+ class SequenceRange
17
+
18
+ class Fragment
19
+
20
+ attr_reader :size
21
+
22
+ def initialize( primary_bin, complement_bin )
23
+ @primary_bin = primary_bin
24
+ @complement_bin = complement_bin
25
+ end
26
+
27
+ DisplayFragment = Struct.new(:primary, :complement, :p_left, :p_right, :c_left, :c_right)
28
+
29
+ def for_display(p_str=nil, c_str=nil)
30
+ df = DisplayFragment.new
31
+ df.primary = ''
32
+ df.complement = ''
33
+
34
+ both_bins = (@primary_bin + @complement_bin).sort.uniq
35
+ both_bins.each do |item|
36
+ @primary_bin.include?(item) ? df.primary << p_str[item] : df.primary << ' '
37
+ @complement_bin.include?(item) ? df.complement << c_str[item] : df.complement << ' '
38
+ end
39
+
40
+ df.p_left = @primary_bin.first
41
+ df.p_right = @primary_bin.last
42
+ df.c_left = @complement_bin.first
43
+ df.c_right = @complement_bin.last
44
+
45
+ df
46
+ end
47
+ end # Fragment
48
+ end # SequenceRange
49
+ end # Range
50
+ end # RestrictionEnzyme
51
+ end # Bio
@@ -0,0 +1,41 @@
1
+ #
2
+ # bio/util/restriction_enzyme/analysis/fragments.rb -
3
+ #
4
+ # Author:: Trevor Wennblom <mailto:trevor@corevx.com>
5
+ # Copyright:: Copyright (c) 2005-2007 Midwinter Laboratories, LLC (http://midwinterlabs.com)
6
+ # License:: The Ruby License
7
+ #
8
+ # $Id: fragments.rb,v 1.5 2007/07/16 19:28:48 k Exp $
9
+ #
10
+
11
+ require 'bio/util/restriction_enzyme'
12
+
13
+ module Bio
14
+ class RestrictionEnzyme
15
+ class Range
16
+ class SequenceRange
17
+
18
+ class Fragments < Array
19
+
20
+ attr_accessor :primary
21
+ attr_accessor :complement
22
+
23
+ def initialize(primary, complement)
24
+ @primary = primary
25
+ @complement = complement
26
+ end
27
+
28
+ DisplayFragment = Struct.new(:primary, :complement)
29
+
30
+ def for_display(p_str=nil, c_str=nil)
31
+ p_str ||= @primary
32
+ c_str ||= @complement
33
+ pretty_fragments = []
34
+ self.each { |fragment| pretty_fragments << fragment.for_display(p_str, c_str) }
35
+ pretty_fragments
36
+ end
37
+ end # Fragments
38
+ end # SequenceRange
39
+ end # Range
40
+ end # RestrictionEnzyme
41
+ end # Bio
@@ -0,0 +1,77 @@
1
+ #
2
+ # bio/util/restriction_enzyme/range/vertical_cut_range.rb -
3
+ #
4
+ # Author:: Trevor Wennblom <mailto:trevor@corevx.com>
5
+ # Copyright:: Copyright (c) 2005-2007 Midwinter Laboratories, LLC (http://midwinterlabs.com)
6
+ # License:: The Ruby License
7
+ #
8
+ # $Id: vertical_cut_range.rb,v 1.5 2007/07/16 19:28:48 k Exp $
9
+ #
10
+
11
+ require 'bio/util/restriction_enzyme'
12
+
13
+ module Bio
14
+ class RestrictionEnzyme
15
+ class Range
16
+
17
+ # FIXME docs are kind of out of date. Change this to VerticalAndHorizontalCutRange
18
+ class VerticalCutRange < CutRange
19
+ attr_reader :p_cut_left, :p_cut_right
20
+ attr_reader :c_cut_left, :c_cut_right
21
+ attr_reader :min, :max
22
+ attr_reader :range
23
+
24
+ # VerticalCutRange provides an extremely raw, yet precise, method of
25
+ # defining the location of cuts on primary and complementary sequences.
26
+ #
27
+ # Many VerticalCutRange objects are used with HorizontalCutRange objects
28
+ # to be contained in CutRanges to define the cut pattern that a
29
+ # specific enzyme may make.
30
+ #
31
+ # VerticalCutRange takes up to four possible cuts, two on the primary
32
+ # strand and two on the complementary strand. In typical usage
33
+ # you will want to make a single cut on the primary strand and a single
34
+ # cut on the complementary strand.
35
+ #
36
+ # However, you can construct it with whatever cuts you desire to accomadate
37
+ # the most eccentric of imaginary restriction enzymes.
38
+ #
39
+ # ---
40
+ # *Arguments*
41
+ # * +p_cut_left+: (_optional_) Left-most cut on the primary strand. +nil+ to skip
42
+ # * +p_cut_right+: (_optional_) Right-most cut on the primary strand. +nil+ to skip
43
+ # * +c_cut_left+: (_optional_) Left-most cut on the complementary strand. +nil+ to skip
44
+ # * +c_cut_right+: (_optional_) Right-most cut on the complementary strand. +nil+ to skip
45
+ # *Returns*:: nothing
46
+ def initialize( p_cut_left=nil, p_cut_right=nil, c_cut_left=nil, c_cut_right=nil )
47
+ @p_cut_left = p_cut_left
48
+ @p_cut_right = p_cut_right
49
+ @c_cut_left = c_cut_left
50
+ @c_cut_right = c_cut_right
51
+
52
+ a = [@p_cut_left, @c_cut_left, @p_cut_right, @c_cut_right]
53
+ a.delete(nil)
54
+ a.sort!
55
+ @min = a.first
56
+ @max = a.last
57
+
58
+ @range = nil
59
+ @range = (@min..@max) unless @min == nil or @max == nil
60
+ return
61
+ end
62
+
63
+ # Check if a location falls within the minimum or maximum values of this
64
+ # range.
65
+ #
66
+ # ---
67
+ # *Arguments*
68
+ # * +i+: Location to check if it is included in the range
69
+ # *Returns*:: +true+ _or_ +false+
70
+ def include?(i)
71
+ return false if @range == nil
72
+ @range.include?(i)
73
+ end
74
+ end # VerticalCutRange
75
+ end # Range
76
+ end # RestrictionEnzyme
77
+ end # Bio
@@ -0,0 +1,199 @@
1
+ #
2
+ # bio/util/restriction_enzyme/single_strand.rb - Single strand of a restriction enzyme sequence
3
+ #
4
+ # Author:: Trevor Wennblom <mailto:trevor@corevx.com>
5
+ # Copyright:: Copyright (c) 2005-2007 Midwinter Laboratories, LLC (http://midwinterlabs.com)
6
+ # License:: The Ruby License
7
+ #
8
+ # $Id: single_strand.rb,v 1.7 2007/07/16 19:28:48 k Exp $
9
+ #
10
+
11
+ require 'bio/util/restriction_enzyme'
12
+ require 'bio/sequence'
13
+
14
+ module Bio
15
+ class RestrictionEnzyme
16
+
17
+ # A single strand of restriction enzyme sequence pattern with a 5' to 3'
18
+ # orientation.
19
+ #
20
+ # DoubleStranded puts the SingleStrand and SingleStrandComplement together to
21
+ # create the sequence pattern with cuts on both strands.
22
+ #
23
+ class SingleStrand < Bio::Sequence::NA
24
+
25
+ autoload :CutLocationsInEnzymeNotation, 'bio/util/restriction_enzyme/single_strand/cut_locations_in_enzyme_notation'
26
+
27
+ include CutSymbol
28
+ include StringFormatting
29
+
30
+ # The cut locations in enzyme notation. Contains a
31
+ # CutLocationsInEnzymeNotation object set when the SingleStrand
32
+ # object is initialized.
33
+ attr_reader :cut_locations_in_enzyme_notation
34
+
35
+ # The cut locations transformed from enzyme index notation to 0-based
36
+ # array index notation. Contains an Array.
37
+ attr_reader :cut_locations
38
+
39
+ # Orientation of the strand, 5' to 3'
40
+ def orientation; [5,3]; end
41
+
42
+ # Constructor for a Bio::RestrictionEnzyme::StingleStrand object.
43
+ #
44
+ # A single strand of restriction enzyme sequence pattern with a 5' to 3' orientation.
45
+ #
46
+ # ---
47
+ # *Arguments*
48
+ # * +sequence+: (_required_) The enzyme sequence.
49
+ # * +c+: (_optional_) Cut locations in enzyme notation.
50
+ # See Bio::RestrictionEnzyme::SingleStrand::CutLocationsInEnzymeNotation
51
+ #
52
+ # *Constraints*
53
+ # * +sequence+ cannot contain immediately adjacent cut symbols (ex. atg^^c).
54
+ # * +c+ is in enzyme index notation and therefore cannot contain a 0.
55
+ # * If +c+ is omitted, +sequence+ must contain a cut symbol.
56
+ # * You cannot provide both a sequence with cut symbols and provide cut locations - ambiguous.
57
+ #
58
+ # +sequence+ must be a kind of:
59
+ # * String
60
+ # * Bio::Sequence::NA
61
+ # * Bio::RestrictionEnzyme::SingleStrand
62
+ #
63
+ # +c+ must be a kind of:
64
+ # * Bio::RestrictionEnzyme::SingleStrand::CutLocationsInEnzymeNotation
65
+ # * Integer, one or more
66
+ # * Array
67
+ #
68
+ # *Returns*:: nothing
69
+ def initialize( sequence, *c )
70
+ c.flatten! # if an array was supplied as an argument
71
+ validate_args(sequence, c)
72
+ sequence.downcase!
73
+
74
+ if sequence =~ re_cut_symbol
75
+ @cut_locations_in_enzyme_notation = CutLocationsInEnzymeNotation.new( strip_padding(sequence) )
76
+ else
77
+ @cut_locations_in_enzyme_notation = CutLocationsInEnzymeNotation.new( c )
78
+ end
79
+
80
+ @stripped = Bio::Sequence::NA.new( strip_cuts_and_padding( sequence ) )
81
+ super( pattern )
82
+ @cut_locations = @cut_locations_in_enzyme_notation.to_array_index
83
+ return
84
+ end
85
+
86
+ # Returns true if this enzyme is palindromic with its reverse complement.
87
+ # Does not report if the +cut_locations+ are palindromic or not.
88
+ #
89
+ # Examples:
90
+ # * This would be palindromic:
91
+ # 5' - ATGCAT - 3'
92
+ # TACGTA
93
+ #
94
+ # * This would not be palindromic:
95
+ # 5' - ATGCGTA - 3'
96
+ # TACGCAT
97
+ #
98
+ # ---
99
+ # *Arguments*
100
+ # * _none_
101
+ # *Returns*:: +true+ _or_ +false+
102
+ def palindromic?
103
+ @stripped.reverse_complement == @stripped
104
+ end
105
+
106
+ # Sequence pattern with no cut symbols and no 'n' padding.
107
+ # * <code>SingleStrand.new('garraxt', [-2, 1, 7]).stripped # => "garraxt"</code>
108
+ attr_reader :stripped
109
+
110
+ # The sequence with 'n' padding and cut symbols.
111
+ # * <code>SingleStrand.new('garraxt', [-2, 1, 7]).with_cut_symbols # => "n^ng^arraxt^n"</code>
112
+ #
113
+ # ---
114
+ # *Arguments*
115
+ # * _none_
116
+ # *Returns*:: The sequence with 'n' padding and cut symbols.
117
+ def with_cut_symbols
118
+ s = pattern
119
+ @cut_locations_in_enzyme_notation.to_array_index.sort.reverse.each { |c| s.insert(c+1, cut_symbol) }
120
+ s
121
+ end
122
+
123
+ # The sequence with 'n' padding on the left and right for cuts larger than the sequence.
124
+ # * <code>SingleStrand.new('garraxt', [-2, 1, 7]).pattern # => "nngarraxtn"</code>
125
+ #
126
+ # ---
127
+ # *Arguments*
128
+ # * _none_
129
+ # *Returns*:: The sequence with 'n' padding on the left and right for cuts larger than the sequence.
130
+ def pattern
131
+ return stripped if @cut_locations_in_enzyme_notation.min == nil
132
+ left = (@cut_locations_in_enzyme_notation.min < 0 ? 'n' * @cut_locations_in_enzyme_notation.min.abs : '')
133
+
134
+ # Add one more 'n' if a cut is at the last position
135
+ right = ( (@cut_locations_in_enzyme_notation.max >= @stripped.length) ? ('n' * (@cut_locations_in_enzyme_notation.max - @stripped.length + 1)) : '')
136
+ [left, stripped, right].to_s
137
+ end
138
+
139
+ # The sequence with 'n' pads, cut symbols, and spacing for alignment.
140
+ # * <code>SingleStrand.new('garraxt', [-2, 1, 7]).with_spaces # => "n^n g^a r r a x t^n"</code>
141
+ #
142
+ # ---
143
+ # *Arguments*
144
+ # * _none_
145
+ # *Returns*:: The sequence with 'n' pads, cut symbols, and spacing for alignment.
146
+ def with_spaces
147
+ add_spacing( with_cut_symbols )
148
+ end
149
+
150
+ #########
151
+ protected
152
+ #########
153
+
154
+ def validate_args( input_pattern, input_cut_locations )
155
+ unless input_pattern.kind_of?(String)
156
+ err = "input_pattern is not a String, Bio::Sequence::NA, or Bio::RestrictionEnzyme::SingleStrand object\n"
157
+ err += "pattern: #{input_pattern}\n"
158
+ err += "class: #{input_pattern.class}"
159
+ raise ArgumentError, err
160
+ end
161
+
162
+ if ( input_pattern =~ re_cut_symbol ) and !input_cut_locations.empty?
163
+ err = "Cut symbol found in sequence, but cut locations were also supplied. Ambiguous.\n"
164
+ err += "pattern: #{input_pattern}\n"
165
+ err += "symbol: #{cut_symbol}\n"
166
+ err += "locations: #{input_cut_locations.inspect}"
167
+ raise ArgumentError, err
168
+ end
169
+
170
+ input_pattern.each_byte do |c|
171
+ c = c.chr.downcase
172
+ unless Bio::NucleicAcid::NAMES.has_key?(c) or c == 'x' or c == 'X' or c == cut_symbol
173
+ err = "Invalid character in pattern.\n"
174
+ err += "Not a nucleotide or representation of possible nucleotides. See Bio::NucleicAcid::NAMES for more information.\n"
175
+ err += "char: #{c}\n"
176
+ err += "input_pattern: #{input_pattern}"
177
+ raise ArgumentError, err
178
+ end
179
+ end
180
+ end
181
+
182
+ # Tadayoshi Funaba's method as discussed in Programming Ruby 2ed, p390
183
+ def self.once(*ids)
184
+ for id in ids
185
+ module_eval <<-"end;"
186
+ alias_method :__#{id.to_i}__, :#{id.to_s}
187
+ private :__#{id.to_i}__
188
+ def #{id.to_s}(*args, &block)
189
+ (@__#{id.to_i}__ ||= [__#{id.to_i}__(*args, &block)])[0]
190
+ end
191
+ end;
192
+ end
193
+ end
194
+
195
+ once :pattern, :with_cut_symbols, :with_spaces, :to_re
196
+
197
+ end # SingleStrand
198
+ end # RestrictionEnzyme
199
+ end # Bio
@@ -0,0 +1,135 @@
1
+ #
2
+ # bio/util/restriction_enzyme/single_strand/cut_locations_in_enzyme_notation.rb - The cut locations, in enzyme notation
3
+ #
4
+ # Author:: Trevor Wennblom <mailto:trevor@corevx.com>
5
+ # Copyright:: Copyright (c) 2005-2007 Midwinter Laboratories, LLC (http://midwinterlabs.com)
6
+ # License:: The Ruby License
7
+ #
8
+ # $Id: cut_locations_in_enzyme_notation.rb,v 1.7 2007/07/16 19:28:48 k Exp $
9
+ #
10
+
11
+ require 'bio/util/restriction_enzyme'
12
+
13
+ module Bio
14
+ class RestrictionEnzyme
15
+ class SingleStrand
16
+
17
+ # Stores the cut location in thier enzyme index notation
18
+ #
19
+ # May be initialized with a series of cuts or an enzyme pattern marked
20
+ # with cut symbols.
21
+ #
22
+ # Enzyme index notation:: 1.._n_, value before 1 is -1
23
+ #
24
+ # example:: [-3][-2][-1][1][2][3][4][5]
25
+ #
26
+ # Negative values are used to indicate when a cut may occur at a specified
27
+ # distance before the sequence begins. This would be padded with 'n'
28
+ # nucleotides to represent wildcards.
29
+ #
30
+ # Notes:
31
+ # * <code>0</code> is invalid as it does not refer to any index
32
+ # * +nil+ is not allowed here as it has no meaning
33
+ # * +nil+ values are kept track of in DoubleStranded::CutLocations as they
34
+ # need a reference point on the correlating strand. In
35
+ # DoubleStranded::CutLocations +nil+ represents no cut or a partial
36
+ # digestion.
37
+ #
38
+ class CutLocationsInEnzymeNotation < Array
39
+ include CutSymbol
40
+ extend CutSymbol
41
+
42
+ # First cut, in enzyme-index notation
43
+ attr_reader :min
44
+
45
+ # Last cut, in enzyme-index notation
46
+ attr_reader :max
47
+
48
+ # Constructor for CutLocationsInEnzymeNotation
49
+ #
50
+ # ---
51
+ # *Arguments*
52
+ # * +a+: Locations of cuts represented as a string with cuts or an array of values
53
+ # Examples:
54
+ # * n^ng^arraxt^n
55
+ # * 2
56
+ # * -1, 5
57
+ # * [-1, 5]
58
+ # *Returns*:: nothing
59
+ def initialize(*a)
60
+ a.flatten! # in case an array was passed as an argument
61
+
62
+ if a.size == 1 and a[0].kind_of? String and a[0] =~ re_cut_symbol
63
+ # Initialize with a cut symbol pattern such as 'n^ng^arraxt^n'
64
+ s = a[0]
65
+ a = []
66
+ i = -( s.tr(cut_symbol, '') =~ %r{[^n]} ) # First character that's not 'n'
67
+ s.each_byte { |c| (a << i; next) if c.chr == cut_symbol; i += 1 }
68
+ a.collect! { |n| n <= 0 ? n-1 : n } # 0 is not a valid enzyme index, decrement from 0 and all negative
69
+ else
70
+ a.collect! { |n| n.to_i } # Cut locations are always integers
71
+ end
72
+
73
+ validate_cut_locations( a )
74
+ super(a)
75
+ self.sort!
76
+ @min = self.first
77
+ @max = self.last
78
+ self.freeze
79
+ end
80
+
81
+ # Transform the cut locations from enzyme index notation to 0-based index
82
+ # notation.
83
+ #
84
+ # input -> output
85
+ # [ 1, 2, 3 ] -> [ 0, 1, 2 ]
86
+ # [ 1, 3, 5 ] -> [ 0, 2, 4 ]
87
+ # [ -1, 1, 2 ] -> [ 0, 1, 2 ]
88
+ # [ -2, 1, 3 ] -> [ 0, 2, 4 ]
89
+ #
90
+ # ---
91
+ # *Arguments*
92
+ # * _none_
93
+ # *Returns*:: +Array+ of cuts in 0-based index notation
94
+ def to_array_index
95
+ return [] if @min == nil
96
+ if @min < 0
97
+ calc = lambda do |n|
98
+ n -= 1 unless n < 0
99
+ n + @min.abs
100
+ end
101
+ else
102
+ calc = lambda { |n| n - 1 }
103
+ end
104
+ self.collect(&calc)
105
+ end
106
+
107
+ #########
108
+ protected
109
+ #########
110
+
111
+ def validate_cut_locations( input_cut_locations )
112
+ unless input_cut_locations == input_cut_locations.uniq
113
+ err = "The cut locations supplied contain duplicate values. Redundant / undefined meaning.\n"
114
+ err += "cuts: #{input_cut_locations.inspect}\n"
115
+ err += "unique: #{input_cut_locations.uniq.inspect}"
116
+ raise ArgumentError, err
117
+ end
118
+
119
+ if input_cut_locations.include?(nil)
120
+ err = "The cut locations supplied contained a nil. nil has no index for enzyme notation, alternative meaning is 'no cut'.\n"
121
+ err += "cuts: #{input_cut_locations.inspect}"
122
+ raise ArgumentError, err
123
+ end
124
+
125
+ if input_cut_locations.include?(0)
126
+ err = "The cut locations supplied contained a '0'. '0' has no index for enzyme notation, alternative meaning is 'no cut'.\n"
127
+ err += "cuts: #{input_cut_locations.inspect}"
128
+ raise ArgumentError, err
129
+ end
130
+
131
+ end
132
+ end # CutLocationsInEnzymeNotation
133
+ end # SingleStrand
134
+ end # RestrictionEnzyme
135
+ end # Bio