bio 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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