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,209 @@
1
+ #
2
+ # bio/db/lasergene.rb - Interface for DNAStar Lasergene sequence file format
3
+ #
4
+ # Author:: Trevor Wennblom <mailto:trevor@corevx.com>
5
+ # Copyright:: Copyright (c) 2007 Center for Biomedical Research Informatics, University of Minnesota (http://cbri.umn.edu)
6
+ # License:: The Ruby License
7
+ #
8
+ # $Id: lasergene.rb,v 1.3 2007/04/05 23:35:40 trevor Exp $
9
+ #
10
+
11
+ module Bio #:nodoc:
12
+
13
+ #
14
+ # bio/db/lasergene.rb - Interface for DNAStar Lasergene sequence file format
15
+ #
16
+ # Author:: Trevor Wennblom <mailto:trevor@corevx.com>
17
+ # Copyright:: Copyright (c) 2007 Center for Biomedical Research Informatics, University of Minnesota (http://cbri.umn.edu)
18
+ # License:: The Ruby License
19
+ #
20
+ # = Description
21
+ #
22
+ # Bio::Lasergene reads DNAStar Lasergene formatted sequence files, or +.seq+
23
+ # files. It only expects to find one sequence per file.
24
+ #
25
+ # = Usage
26
+ #
27
+ # require 'bio'
28
+ # filename = 'MyFile.seq'
29
+ # lseq = Bio::Lasergene.new( IO.readlines(filename) )
30
+ # lseq.entry_id # => "Contig 1"
31
+ # lseq.seq # => ATGACGTATCCAAAGAGGCGTTACC
32
+ #
33
+ # = Comments
34
+ #
35
+ # I'm only aware of the following three kinds of Lasergene file formats. Feel
36
+ # free to send me other examples that may not currently be accounted for.
37
+ #
38
+ # File format 1:
39
+ #
40
+ # ## begin ##
41
+ # "Contig 1" (1,934)
42
+ # Contig Length: 934 bases
43
+ # Average Length/Sequence: 467 bases
44
+ # Total Sequence Length: 1869 bases
45
+ # Top Strand: 2 sequences
46
+ # Bottom Strand: 2 sequences
47
+ # Total: 4 sequences
48
+ # ^^
49
+ # ATGACGTATCCAAAGAGGCGTTACCGGAGAAGAAGACACCGCCCCCGCAGTCCTCTTGGCCAGATCCTCCGCCGCCGCCCCTGGCTCGTCCACCCCCGCCACAGTTACCGCTGGAGAAGGAAAAATGGCATCTTCAWCACCCGCCTATCCCGCAYCTTCGGAWRTACTATCAAGCGAACCACAGTCAGAACGCCCTCCTGGGCGGTGGACATGATGAGATTCAATATTAATGACTTTCTTCCCCCAGGAGGGGGCTCAAACCCCCGCTCTGTGCCCTTTGAATACTACAGAATAAGAAAGGTTAAGGTTGAATTCTGGCCCTGCTCCCCGATCACCCAGGGTGACAGGGGAATGGGCTCCAGTGCTGWTATTCTAGMTGATRRCTTKGTAACAAAGRCCACAGCCCTCACCTATGACCCCTATGTAAACTTCTCCTCCCGCCATACCATAACCCAGCCCTTCTCCTACCRCTCCCGYTACTTTACCCCCAAACCTGTCCTWGATKCCACTATKGATKACTKCCAACCAAACAACAAAAGAAACCAGCTGTGGSTGAGACTACAWACTGCTGGAAATGTAGACCWCGTAGGCCTSGGCACTGCGTKCGAAAACAGTATATACGACCAGGAATACAATATCCGTGTMACCATGTATGTACAATTCAGAGAATTTAATCTTAAAGACCCCCCRCTTMACCCKTAATGAATAATAAMAACCATTACGAAGTGATAAAAWAGWCTCAGTAATTTATTYCATATGGAAATTCWSGGCATGGGGGGGAAAGGGTGACGAACKKGCCCCCTTCCTCCSTSGMYTKTTCYGTAGCATTCYTCCAMAAYACCWAGGCAGYAMTCCTCCSATCAAGAGcYTSYACAGCTGGGACAGCAGTTGAGGAGGACCATTCAAAGGGGGTCGGATTGCTGGTAATCAGA
50
+ # ## end ##
51
+ #
52
+ #
53
+ # File format 2:
54
+ #
55
+ # ## begin ##
56
+ # ^^: 350,935
57
+ # Contig 1 (1,935)
58
+ # Contig Length: 935 bases
59
+ # Average Length/Sequence: 580 bases
60
+ # Total Sequence Length: 2323 bases
61
+ # Top Strand: 2 sequences
62
+ # Bottom Strand: 2 sequences
63
+ # Total: 4 sequences
64
+ # ^^
65
+ # ATGTCGGGGAAATGCTTGACCGCGGGCTACTGCTCATCATTGCTTTCTTTGTGGTATATCGTGCCGTTCTGTTTTGCTGTGCTCGTCAACGCCAGCGGCGACAGCAGCTCTCATTTTCAGTCGATTTATAACTTGACGTTATGTGAGCTGAATGGCACGAACTGGCTGGCAGACAACTTTAACTGGGCTGTGGAGACTTTTGTCATCTTCCCCGTGTTGACTCACATTGTTTCCTATGGTGCACTCACTACCAGTCATTTTCTTGACACAGTTGGTCTAGTTACTGTGTCTACCGCCGGGTTTTATCACGGGCGGTACGTCTTGAGTAGCATCTACGCGGTCTGTGCTCTGGCTGCGTTGATTTGCTTCGCCATCAGGTTTGCGAAGAACTGCATGTCCTGGCGCTACTCTTGCACTAGATACACCAACTTCCTCCTGGACACCAAGGGCAGACTCTATCGTTGGCGGTCGCCTGTCATCATAGAGAAAGGGGGTAAGGTTGAGGTCGAAGGTCATCTGATCGATCTCAAAAGAGTTGTGCTTGATGGCTCTGTGGCGACACCTTTAACCAGAGTTTCAGCGGAACAATGGGGTCGTCCCTAGACGACTTTTGCCATGATAGTACAGCCCCACAGAAGGTGCTCTTGGCGTTTTCCATCACCTACACGCCAGTGATGATATATGCCCTAAAGGTAAGCCGCGGCCGACTTTTGGGGCTTCTGCACCTTTTGATTTTTTTGAACTGTGCCTTTACTTTCGGGTACATGACATTCGTGCACTTTCGGAGCACGAACAAGGTCGCGCTCACTATGGGAGCAGTAGTCGCACTCCTTTGGGGGGTGTACTCAGCCATAGAAACCTGGAAATTCATCACCTCCAGATGCCGTTGTGCTTGCTAGGCCGCAAGTACATTCTGGCCCCTGCCCACCACGTTG
66
+ # ## end ##
67
+ #
68
+ # File format 3 (non-standard Lasergene header):
69
+ #
70
+ # ## begin ##
71
+ # LOCUS PRU87392 15411 bp RNA linear VRL 17-NOV-2000
72
+ # DEFINITION Porcine reproductive and respiratory syndrome virus strain VR-2332,
73
+ # complete genome.
74
+ # ACCESSION U87392 AF030244 U00153
75
+ # VERSION U87392.3 GI:11192298
76
+ # [...cut...]
77
+ # 3'UTR 15261..15411
78
+ # polyA_site 15409
79
+ # ORIGIN
80
+ # ^^
81
+ # atgacgtataggtgttggctctatgccttggcatttgtattgtcaggagctgtgaccattggcacagcccaaaacttgctgcacagaaacacccttctgtgatagcctccttcaggggagcttagggtttgtccctagcaccttgcttccggagttgcactgctttacggtctctccacccctttaaccatgtctgggatacttgatcggtgcacgtgtacccccaatgccagggtgtttatggcggagggccaagtctactgcacacgatgcctcagtgcacggtctctccttcccctgaacctccaagtttctgagctcggggtgctaggcctattctacaggcccgaagagccactccggtggacgttgccacgtgcattccccactgttgagtgctcccccgccggggcctgctggctttctgcaatctttccaatcgcacgaatgaccagtggaaacctgaacttccaacaaagaatggtacgggtcgcagctgagctttacagagccggccagctcacccctgcagtcttgaaggctctacaagtttatgaacggggttgccgctggtaccccattgttggacctgtccctggagtggccgttttcgccaattccctacatgtgagtgataaacctttcccgggagcaactcacgtgttgaccaacctgccgctcccgcagagacccaagcctgaagacttttgcccctttgagtgtgctatggctactgtctatgacattggtcatgacgccgtcatgtatgtggccgaaaggaaagtctcctgggcccctcgtggcggggatgaagtgaaatttgaagctgtccccggggagttgaagttgattgcgaaccggctccgcacctccttcccgccccaccacacagtggacatgtctaagttcgccttcacagcccctgggtgtggtgtttctatgcgggtcgaacgccaacacggctgccttcccgctgacactgtccctgaaggcaactgctggtggagcttgtttgacttgcttccactggaagttcagaacaaagaaattcgccatgctaaccaatttggctaccagaccaagcatggtgtctctggcaagtacctacagcggaggctgca[...cut...]
82
+ # ## end ##
83
+ #
84
+ class Lasergene
85
+ # Entire header before the sequence
86
+ attr_reader :comments
87
+
88
+ # Sequence
89
+ #
90
+ # Bio::Sequence::NA or Bio::Sequence::AA object
91
+ attr_reader :sequence
92
+
93
+ # Name of sequence
94
+ # * Parsed from standard Lasergene header
95
+ attr_reader :name
96
+
97
+ # Contig length, length of present sequence
98
+ # * Parsed from standard Lasergene header
99
+ attr_reader :contig_length
100
+
101
+ # Average length per sequence
102
+ # * Parsed from standard Lasergene header
103
+ attr_reader :average_length
104
+
105
+ # Length of parent sequence
106
+ # * Parsed from standard Lasergene header
107
+ attr_reader :total_length
108
+
109
+ # Number of top strand sequences
110
+ # * Parsed from standard Lasergene header
111
+ attr_reader :top_strand_sequences
112
+
113
+ # Number of bottom strand sequences
114
+ # * Parsed from standard Lasergene header
115
+ attr_reader :bottom_strand_sequences
116
+
117
+ # Number of sequences
118
+ # * Parsed from standard Lasergene header
119
+ attr_reader :total_sequences
120
+
121
+ DELIMITER_1 = '^\^\^:' # Match '^^:' at the beginning of a line
122
+ DELIMITER_2 = '^\^\^' # Match '^^' at the beginning of a line
123
+
124
+ def initialize(lines)
125
+ process(lines)
126
+ end
127
+
128
+ # Is the comment header recognized as standard Lasergene format?
129
+ #
130
+ # ---
131
+ # *Arguments*
132
+ # * _none_
133
+ # *Returns*:: +true+ _or_ +false+
134
+ def standard_comment?
135
+ @standard_comment
136
+ end
137
+
138
+ # Sequence
139
+ #
140
+ # Bio::Sequence::NA or Bio::Sequence::AA object
141
+ def seq
142
+ @sequence
143
+ end
144
+
145
+ # Name of sequence
146
+ # * Parsed from standard Lasergene header
147
+ def entry_id
148
+ @name
149
+ end
150
+
151
+ #########
152
+ protected
153
+ #########
154
+
155
+ def process(lines)
156
+ delimiter_1_indices = []
157
+ delimiter_2_indices = []
158
+
159
+ # If the data from the file is passed as one big String instead of
160
+ # broken into an Array, convert lines to an Array
161
+ if lines.kind_of? String
162
+ lines = lines.tr("\r", '').split("\n")
163
+ end
164
+
165
+ lines.each_with_index do |line, index|
166
+ if line.match DELIMITER_1
167
+ delimiter_1_indices << index
168
+ elsif line.match DELIMITER_2
169
+ delimiter_2_indices << index
170
+ end
171
+ end
172
+
173
+ raise InputError, "More than one delimiter of type '#{DELIMITER_1}'" if delimiter_1_indices.size > 1
174
+ raise InputError, "More than one delimiter of type '#{DELIMITER_2}'" if delimiter_2_indices.size > 1
175
+ raise InputError, "No comment to data separator of type '#{DELIMITER_2}'" if delimiter_2_indices.size < 1
176
+
177
+ if !delimiter_1_indices.empty?
178
+ # toss out DELIMETER_1 and anything preceding it
179
+ @comments = lines[ (delimiter_1_indices[0] + 1) .. (delimiter_2_indices[0] - 1) ]
180
+ else
181
+ @comments = lines[ 0 .. (delimiter_2_indices[0] - 1) ]
182
+ end
183
+
184
+ @standard_comment = false
185
+ if @comments[0] =~ %r{(.+)\s+\(\d+,\d+\)} # if we have a standard Lasergene comment
186
+ @standard_comment = true
187
+ @name = $1
188
+ comments.each do |comment|
189
+ if comment.match('Contig Length:\s+(\d+)')
190
+ @contig_length = $1.to_i
191
+ elsif comment.match('Average Length/Sequence:\s+(\d+)')
192
+ @average_length = $1.to_i
193
+ elsif comment.match('Total Sequence Length:\s+(\d+)')
194
+ @total_length = $1.to_i
195
+ elsif comment.match('Top Strand:\s+(\d+)')
196
+ @top_strand_sequences = $1.to_i
197
+ elsif comment.match('Bottom Strand:\s+(\d+)')
198
+ @bottom_strand_sequences = $1.to_i
199
+ elsif comment.match('Total:\s+(\d+)')
200
+ @total_sequences = $1.to_i
201
+ end
202
+ end
203
+ end
204
+
205
+ @comments = @comments.join('')
206
+ @sequence = Bio::Sequence.auto( lines[ (delimiter_2_indices[0] + 1) .. -1 ].join('') )
207
+ end
208
+ end # Lasergene
209
+ end # Bio
@@ -1,34 +1,10 @@
1
1
  #
2
2
  # = bio/db/litdb.rb - LITDB database class
3
3
  #
4
- # Copyright:: Copyright (C) 2001 KATAYAMA Toshiaki <k@bioruby.org>
5
- # License:: LGPL
4
+ # Copyright:: Copyright (C) 2001 Toshiaki Katayama <k@bioruby.org>
5
+ # License:: The Ruby License
6
6
  #
7
- # $Id: litdb.rb,v 0.7 2005/12/18 15:58:41 k Exp $
8
- #
9
- # == Description
10
- #
11
- #
12
- # == Example
13
- # == References
14
- #
15
- #--
16
- #
17
- # This library is free software; you can redistribute it and/or
18
- # modify it under the terms of the GNU Lesser General Public
19
- # License as published by the Free Software Foundation; either
20
- # version 2 of the License, or (at your option) any later version.
21
- #
22
- # This library is distributed in the hope that it will be useful,
23
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
24
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
25
- # Lesser General Public License for more details.
26
- #
27
- # You should have received a copy of the GNU Lesser General Public
28
- # License along with this library; if not, write to the Free Software
29
- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
30
- #
31
- #++
7
+ # $Id: litdb.rb,v 0.10 2007/04/05 23:35:40 trevor Exp $
32
8
  #
33
9
 
34
10
  require 'bio/db'
@@ -2,9 +2,16 @@
2
2
  # = bio/db/medline.rb - NCBI PubMed/MEDLINE database class
3
3
  #
4
4
  # Copyright:: Copyright (C) 2001, 2005
5
- # KATAYAMA Toshiaki <k@bioruby.org>
6
- # License:: LGPL
5
+ # Toshiaki Katayama <k@bioruby.org>
6
+ # License:: The Ruby License
7
7
  #
8
+ # $Id: medline.rb,v 1.16 2007/04/05 23:35:40 trevor Exp $
9
+ #
10
+
11
+ require 'bio/db'
12
+
13
+ module Bio
14
+
8
15
  # == Description
9
16
  #
10
17
  # NCBI PubMed/MEDLINE database class.
@@ -16,323 +23,295 @@
16
23
  # medline.pmid == medline.entry_id
17
24
  # medilne.mesh
18
25
  #
19
- # == References
20
- #
21
- # $Id: medline.rb,v 1.13 2006/02/18 15:03:47 nakao Exp $
22
- #
23
- #++
24
- #
25
- # This library is free software; you can redistribute it and/or
26
- # modify it under the terms of the GNU Lesser General Public
27
- # License as published by the Free Software Foundation; either
28
- # version 2 of the License, or (at your option) any later version.
29
- #
30
- # This library is distributed in the hope that it will be useful,
31
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
32
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
33
- # Lesser General Public License for more details.
34
- #
35
- # You should have received a copy of the GNU Lesser General Public
36
- # License along with this library; if not, write to the Free Software
37
- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
38
- #
39
- #--
40
- #
41
-
42
- require 'bio/db'
43
-
44
- module Bio
45
-
46
- # NCBI PubMed/MEDLINE database class.
47
- class MEDLINE < NCBIDB
26
+ class MEDLINE < NCBIDB
48
27
 
49
- #
50
- def initialize(entry)
51
- @pubmed = Hash.new('')
28
+ #
29
+ def initialize(entry)
30
+ @pubmed = Hash.new('')
52
31
 
53
- tag = ''
54
- entry.each_line do |line|
55
- if line =~ /^\w/
56
- tag = line[0,4].strip
57
- end
58
- @pubmed[tag] += line[6..-1] if line.length > 6
32
+ tag = ''
33
+ entry.each_line do |line|
34
+ if line =~ /^\w/
35
+ tag = line[0,4].strip
59
36
  end
37
+ @pubmed[tag] += line[6..-1] if line.length > 6
60
38
  end
39
+ end
61
40
 
62
41
 
63
- # returns a Reference object.
64
- def reference
65
- hash = Hash.new('')
42
+ # returns a Reference object.
43
+ def reference
44
+ hash = Hash.new('')
66
45
 
67
- hash['authors'] = authors
68
- hash['title'] = title
69
- hash['journal'] = journal
70
- hash['volume'] = volume
71
- hash['issue'] = issue
72
- hash['pages'] = pages
73
- hash['year'] = year
74
- hash['pubmed'] = pmid
75
- hash['medline'] = ui
76
- hash['abstract'] = abstract
77
- hash['mesh'] = mesh
78
- hash['affiliations'] = affiliations
46
+ hash['authors'] = authors
47
+ hash['title'] = title
48
+ hash['journal'] = journal
49
+ hash['volume'] = volume
50
+ hash['issue'] = issue
51
+ hash['pages'] = pages
52
+ hash['year'] = year
53
+ hash['pubmed'] = pmid
54
+ hash['medline'] = ui
55
+ hash['abstract'] = abstract
56
+ hash['mesh'] = mesh
57
+ hash['affiliations'] = affiliations
79
58
 
80
- hash.delete_if { |k, v| v.nil? or v.empty? }
59
+ hash.delete_if { |k, v| v.nil? or v.empty? }
81
60
 
82
- return Reference.new(hash)
83
- end
61
+ return Reference.new(hash)
62
+ end
84
63
 
85
64
 
86
- ### Common MEDLINE tags
65
+ ### Common MEDLINE tags
87
66
 
88
- # PMID - PubMed Unique Identifier
89
- # Unique number assigned to each PubMed citation.
90
- def pmid
91
- @pubmed['PMID'].strip
92
- end
93
- alias entry_id pmid
67
+ # PMID - PubMed Unique Identifier
68
+ # Unique number assigned to each PubMed citation.
69
+ def pmid
70
+ @pubmed['PMID'].strip
71
+ end
72
+ alias entry_id pmid
94
73
 
95
- # UI - MEDLINE Unique Identifier
96
- # Unique number assigned to each MEDLINE citation.
97
- def ui
98
- @pubmed['UI'].strip
99
- end
74
+ # UI - MEDLINE Unique Identifier
75
+ # Unique number assigned to each MEDLINE citation.
76
+ def ui
77
+ @pubmed['UI'].strip
78
+ end
100
79
 
101
- # TA - Journal Title Abbreviation
102
- # Standard journal title abbreviation.
103
- def ta
104
- @pubmed['TA'].gsub(/\s+/, ' ').strip
105
- end
106
- alias journal ta
80
+ # TA - Journal Title Abbreviation
81
+ # Standard journal title abbreviation.
82
+ def ta
83
+ @pubmed['TA'].gsub(/\s+/, ' ').strip
84
+ end
85
+ alias journal ta
107
86
 
108
- # VI - Volume
109
- # Journal volume.
110
- def vi
111
- @pubmed['VI'].strip
112
- end
113
- alias volume vi
87
+ # VI - Volume
88
+ # Journal volume.
89
+ def vi
90
+ @pubmed['VI'].strip
91
+ end
92
+ alias volume vi
114
93
 
115
- # IP - Issue
116
- # The number of the issue, part, or supplement of the journal in which
117
- # the article was published.
118
- def ip
119
- @pubmed['IP'].strip
120
- end
121
- alias issue ip
94
+ # IP - Issue
95
+ # The number of the issue, part, or supplement of the journal in which
96
+ # the article was published.
97
+ def ip
98
+ @pubmed['IP'].strip
99
+ end
100
+ alias issue ip
122
101
 
123
- # PG - Page Number
124
- # The full pagination of the article.
125
- def pg
126
- @pubmed['PG'].strip
127
- end
102
+ # PG - Page Number
103
+ # The full pagination of the article.
104
+ def pg
105
+ @pubmed['PG'].strip
106
+ end
128
107
 
129
- def pages
130
- pages = pg
131
- if pages =~ /-/
132
- from, to = pages.split('-')
133
- if (len = from.length - to.length) > 0
134
- to = from[0,len] + to
135
- end
136
- pages = "#{from}-#{to}"
108
+ def pages
109
+ pages = pg
110
+ if pages =~ /-/
111
+ from, to = pages.split('-')
112
+ if (len = from.length - to.length) > 0
113
+ to = from[0,len] + to
137
114
  end
138
- return pages
115
+ pages = "#{from}-#{to}"
139
116
  end
117
+ return pages
118
+ end
140
119
 
141
- # DP - Publication Date
142
- # The date the article was published.
143
- def dp
144
- @pubmed['DP'].strip
145
- end
146
- alias date dp
120
+ # DP - Publication Date
121
+ # The date the article was published.
122
+ def dp
123
+ @pubmed['DP'].strip
124
+ end
125
+ alias date dp
147
126
 
148
- def year
149
- dp[0,4]
150
- end
127
+ def year
128
+ dp[0,4]
129
+ end
151
130
 
152
- # TI - Title Words
153
- # The title of the article.
154
- def ti
155
- @pubmed['TI'].gsub(/\s+/, ' ').strip
156
- end
157
- alias title ti
131
+ # TI - Title Words
132
+ # The title of the article.
133
+ def ti
134
+ @pubmed['TI'].gsub(/\s+/, ' ').strip
135
+ end
136
+ alias title ti
158
137
 
159
- # AB - Abstract
160
- # Abstract.
161
- def ab
162
- @pubmed['AB'].gsub(/\s+/, ' ').strip
163
- end
164
- alias abstract ab
138
+ # AB - Abstract
139
+ # Abstract.
140
+ def ab
141
+ @pubmed['AB'].gsub(/\s+/, ' ').strip
142
+ end
143
+ alias abstract ab
165
144
 
166
- # AU - Author Name
167
- # Authors' names.
168
- def au
169
- @pubmed['AU'].strip
170
- end
145
+ # AU - Author Name
146
+ # Authors' names.
147
+ def au
148
+ @pubmed['AU'].strip
149
+ end
171
150
 
172
- def authors
173
- authors = []
174
- au.split(/\n/).each do |author|
175
- if author =~ / /
176
- name = author.split(/\s+/)
177
- suffix = name[-2] =~ /^[A-Z]+$/ ? name.pop : nil # Jr etc.
178
- initial = name.pop.split(//).join('. ')
179
- author = "#{name.join(' ')}, #{initial}."
180
- end
181
- if suffix
182
- author << " " + suffix
183
- end
184
- authors.push(author)
151
+ def authors
152
+ authors = []
153
+ au.split(/\n/).each do |author|
154
+ if author =~ / /
155
+ name = author.split(/\s+/)
156
+ suffix = name[-2] =~ /^[A-Z]+$/ ? name.pop : nil # Jr etc.
157
+ initial = name.pop.split(//).join('. ')
158
+ author = "#{name.join(' ')}, #{initial}."
185
159
  end
186
- return authors
160
+ if suffix
161
+ author << " " + suffix
162
+ end
163
+ authors.push(author)
187
164
  end
165
+ return authors
166
+ end
188
167
 
189
- # SO - Source
190
- # Composite field containing bibliographic information.
191
- def so
192
- @pubmed['SO'].strip
193
- end
194
- alias source so
168
+ # SO - Source
169
+ # Composite field containing bibliographic information.
170
+ def so
171
+ @pubmed['SO'].strip
172
+ end
173
+ alias source so
195
174
 
196
- # MH - MeSH Terms
197
- # NLM's controlled vocabulary.
198
- def mh
199
- @pubmed['MH'].strip.split(/\n/)
200
- end
201
- alias mesh mh
175
+ # MH - MeSH Terms
176
+ # NLM's controlled vocabulary.
177
+ def mh
178
+ @pubmed['MH'].strip.split(/\n/)
179
+ end
180
+ alias mesh mh
202
181
 
203
- # AD - Affiliation
204
- # Institutional affiliation and address of the first author, and grant
205
- # numbers.
206
- def ad
207
- @pubmed['AD'].strip.split(/\n/)
208
- end
209
- alias affiliations ad
182
+ # AD - Affiliation
183
+ # Institutional affiliation and address of the first author, and grant
184
+ # numbers.
185
+ def ad
186
+ @pubmed['AD'].strip.split(/\n/)
187
+ end
188
+ alias affiliations ad
210
189
 
211
190
 
212
- ### Other MEDLINE tags
191
+ ### Other MEDLINE tags
213
192
 
214
- # AID - Article Identifier
215
- # Article ID values may include the pii (controlled publisher identifier)
216
- # or doi (Digital Object Identifier).
193
+ # AID - Article Identifier
194
+ # Article ID values may include the pii (controlled publisher identifier)
195
+ # or doi (Digital Object Identifier).
217
196
 
218
- # CI - Copyright Information
219
- # Copyright statement.
197
+ # CI - Copyright Information
198
+ # Copyright statement.
220
199
 
221
- # CIN - Comment In
222
- # Reference containing a comment about the article.
200
+ # CIN - Comment In
201
+ # Reference containing a comment about the article.
223
202
 
224
- # CN - Collective Name
225
- # Corporate author or group names with authorship responsibility.
203
+ # CN - Collective Name
204
+ # Corporate author or group names with authorship responsibility.
226
205
 
227
- # CON - Comment On
228
- # Reference upon which the article comments.
206
+ # CON - Comment On
207
+ # Reference upon which the article comments.
229
208
 
230
- # CY - Country
231
- # The place of publication of the journal.
209
+ # CY - Country
210
+ # The place of publication of the journal.
232
211
 
233
- # DA - Date Created
234
- # Used for internal processing at NLM.
212
+ # DA - Date Created
213
+ # Used for internal processing at NLM.
235
214
 
236
- # DCOM - Date Completed
237
- # Used for internal processing at NLM.
215
+ # DCOM - Date Completed
216
+ # Used for internal processing at NLM.
238
217
 
239
- # DEP - Date of Electronic Publication
240
- # Electronic publication date.
218
+ # DEP - Date of Electronic Publication
219
+ # Electronic publication date.
241
220
 
242
- # EDAT - Entrez Date
243
- # The date the citation was added to PubMed.
221
+ # EDAT - Entrez Date
222
+ # The date the citation was added to PubMed.
244
223
 
245
- # EIN - Erratum In
246
- # Reference containing a published erratum to the article.
224
+ # EIN - Erratum In
225
+ # Reference containing a published erratum to the article.
247
226
 
248
- # GS - Gene Symbol
249
- # Abbreviated gene names (used 1991 through 1996).
227
+ # GS - Gene Symbol
228
+ # Abbreviated gene names (used 1991 through 1996).
250
229
 
251
- # ID - Identification Number
252
- # Research grant numbers, contract numbers, or both that designate
253
- # financial support by any agency of the US PHS (Public Health Service).
230
+ # ID - Identification Number
231
+ # Research grant numbers, contract numbers, or both that designate
232
+ # financial support by any agency of the US PHS (Public Health Service).
254
233
 
255
- # IS - ISSN
256
- # International Standard Serial Number of the journal.
234
+ # IS - ISSN
235
+ # International Standard Serial Number of the journal.
257
236
 
258
- # JC - Journal Title Code
259
- # MEDLINE unique three-character code for the journal.
237
+ # JC - Journal Title Code
238
+ # MEDLINE unique three-character code for the journal.
260
239
 
261
- # JID - NLM Unique ID
262
- # Unique journal ID in NLM's catalog of books, journals, and audiovisuals.
240
+ # JID - NLM Unique ID
241
+ # Unique journal ID in NLM's catalog of books, journals, and audiovisuals.
263
242
 
264
- # LA - Language
265
- # The language in which the article was published.
243
+ # LA - Language
244
+ # The language in which the article was published.
266
245
 
267
- # LR - Last Revision Date
268
- # The date a change was made to the record during a maintenance procedure.
246
+ # LR - Last Revision Date
247
+ # The date a change was made to the record during a maintenance procedure.
269
248
 
270
- # MHDA - MeSH Date
271
- # The date MeSH terms were added to the citation. The MeSH date is the
272
- # same as the Entrez date until MeSH are added.
249
+ # MHDA - MeSH Date
250
+ # The date MeSH terms were added to the citation. The MeSH date is the
251
+ # same as the Entrez date until MeSH are added.
273
252
 
274
- # PHST - Publication History Status Date
275
- # History status date.
253
+ # PHST - Publication History Status Date
254
+ # History status date.
276
255
 
277
- # PS - Personal Name as Subject
278
- # Individual is the subject of the article.
256
+ # PS - Personal Name as Subject
257
+ # Individual is the subject of the article.
279
258
 
280
- # PST - Publication Status
281
- # Publication status.
259
+ # PST - Publication Status
260
+ # Publication status.
282
261
 
283
- # PT - Publication Type
284
- # The type of material the article represents.
285
- def pt
286
- @pubmed['PT'].strip.split(/\n/)
287
- end
288
- alias publication_type pt
262
+ # PT - Publication Type
263
+ # The type of material the article represents.
264
+ def pt
265
+ @pubmed['PT'].strip.split(/\n/)
266
+ end
267
+ alias publication_type pt
289
268
 
290
- # RF - Number of References
291
- # Number of bibliographic references for Review articles.
269
+ # RF - Number of References
270
+ # Number of bibliographic references for Review articles.
292
271
 
293
- # RIN - Retraction In
294
- # Retraction of the article
272
+ # RIN - Retraction In
273
+ # Retraction of the article
295
274
 
296
- # RN - EC/RN Number
297
- # Number assigned by the Enzyme Commission to designate a particular
298
- # enzyme or by the Chemical Abstracts Service for Registry Numbers.
275
+ # RN - EC/RN Number
276
+ # Number assigned by the Enzyme Commission to designate a particular
277
+ # enzyme or by the Chemical Abstracts Service for Registry Numbers.
299
278
 
300
- # ROF - Retraction Of
301
- # Article being retracted.
279
+ # ROF - Retraction Of
280
+ # Article being retracted.
302
281
 
303
- # RPF - Republished From
304
- # Original article.
282
+ # RPF - Republished From
283
+ # Original article.
305
284
 
306
- # SB - Journal Subset
307
- # Code for a specific set of journals.
285
+ # SB - Journal Subset
286
+ # Code for a specific set of journals.
308
287
 
309
- # SI - Secondary Source Identifier
310
- # Identifies a secondary source that supplies information, e.g., other
311
- # data sources, databanks and accession numbers of molecular sequences
312
- # discussed in articles.
288
+ # SI - Secondary Source Identifier
289
+ # Identifies a secondary source that supplies information, e.g., other
290
+ # data sources, databanks and accession numbers of molecular sequences
291
+ # discussed in articles.
313
292
 
314
- # TT - Transliterated / Vernacular Title
315
- # Non-Roman alphabet language titles are transliterated.
293
+ # TT - Transliterated / Vernacular Title
294
+ # Non-Roman alphabet language titles are transliterated.
316
295
 
317
- # UIN - Update In
318
- # Update to the article.
296
+ # UIN - Update In
297
+ # Update to the article.
319
298
 
320
- # UOF - Update Of
321
- # The article being updated.
299
+ # UOF - Update Of
300
+ # The article being updated.
322
301
 
323
- # URLF - URL Full-Text
324
- # Link to the full-text of article at provider's website. Links are
325
- # incomplete. Use PmLink for the complete set of available links.
326
- # [PmLink] http://www.ncbi.nlm.nih.gov/entrez/utils/pmlink_help.html
302
+ # URLF - URL Full-Text
303
+ # Link to the full-text of article at provider's website. Links are
304
+ # incomplete. Use PmLink for the complete set of available links.
305
+ # [PmLink] http://www.ncbi.nlm.nih.gov/entrez/utils/pmlink_help.html
327
306
 
328
- # URLS - URL Summary
329
- # Link to the article summary at provider's website. Links are
330
- # incomplete. Use PmLink for the complete set of available links.
331
- # [PmLink] http://www.ncbi.nlm.nih.gov/entrez/utils/pmlink_help.html
307
+ # URLS - URL Summary
308
+ # Link to the article summary at provider's website. Links are
309
+ # incomplete. Use PmLink for the complete set of available links.
310
+ # [PmLink] http://www.ncbi.nlm.nih.gov/entrez/utils/pmlink_help.html
332
311
 
333
- end
312
+ end # MEDLINE
334
313
 
335
- end
314
+ end # Bio
336
315
 
337
316
 
338
317