jandot-bio 1.2.1

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 (335) hide show
  1. data/bin/bioruby +44 -0
  2. data/bin/br_biofetch.rb +47 -0
  3. data/bin/br_bioflat.rb +282 -0
  4. data/bin/br_biogetseq.rb +45 -0
  5. data/bin/br_pmfetch.rb +421 -0
  6. data/doc/Changes-0.7.rd +369 -0
  7. data/doc/KEGG_API.rd +1843 -0
  8. data/doc/KEGG_API.rd.ja +1834 -0
  9. data/doc/Tutorial.rd +1296 -0
  10. data/doc/Tutorial.rd.ja +2640 -0
  11. data/etc/bioinformatics/seqdatabase.ini +210 -0
  12. data/lib/bio.rb +279 -0
  13. data/lib/bio/alignment.rb +2518 -0
  14. data/lib/bio/appl/bl2seq/report.rb +334 -0
  15. data/lib/bio/appl/blast.rb +351 -0
  16. data/lib/bio/appl/blast/format0.rb +1438 -0
  17. data/lib/bio/appl/blast/format8.rb +83 -0
  18. data/lib/bio/appl/blast/report.rb +516 -0
  19. data/lib/bio/appl/blast/rexml.rb +135 -0
  20. data/lib/bio/appl/blast/rpsblast.rb +176 -0
  21. data/lib/bio/appl/blast/wublast.rb +550 -0
  22. data/lib/bio/appl/blast/xmlparser.rb +228 -0
  23. data/lib/bio/appl/blat/report.rb +489 -0
  24. data/lib/bio/appl/clustalw.rb +219 -0
  25. data/lib/bio/appl/clustalw/report.rb +152 -0
  26. data/lib/bio/appl/emboss.rb +203 -0
  27. data/lib/bio/appl/fasta.rb +237 -0
  28. data/lib/bio/appl/fasta/format10.rb +325 -0
  29. data/lib/bio/appl/gcg/msf.rb +212 -0
  30. data/lib/bio/appl/gcg/seq.rb +195 -0
  31. data/lib/bio/appl/genscan/report.rb +552 -0
  32. data/lib/bio/appl/hmmer.rb +126 -0
  33. data/lib/bio/appl/hmmer/report.rb +683 -0
  34. data/lib/bio/appl/iprscan/report.rb +374 -0
  35. data/lib/bio/appl/mafft.rb +259 -0
  36. data/lib/bio/appl/mafft/report.rb +226 -0
  37. data/lib/bio/appl/muscle.rb +52 -0
  38. data/lib/bio/appl/phylip/alignment.rb +129 -0
  39. data/lib/bio/appl/phylip/distance_matrix.rb +96 -0
  40. data/lib/bio/appl/probcons.rb +41 -0
  41. data/lib/bio/appl/psort.rb +548 -0
  42. data/lib/bio/appl/psort/report.rb +457 -0
  43. data/lib/bio/appl/pts1.rb +263 -0
  44. data/lib/bio/appl/sim4.rb +124 -0
  45. data/lib/bio/appl/sim4/report.rb +485 -0
  46. data/lib/bio/appl/sosui/report.rb +151 -0
  47. data/lib/bio/appl/spidey/report.rb +593 -0
  48. data/lib/bio/appl/targetp/report.rb +267 -0
  49. data/lib/bio/appl/tcoffee.rb +55 -0
  50. data/lib/bio/appl/tmhmm/report.rb +222 -0
  51. data/lib/bio/command.rb +337 -0
  52. data/lib/bio/data/aa.rb +349 -0
  53. data/lib/bio/data/codontable.rb +722 -0
  54. data/lib/bio/data/na.rb +223 -0
  55. data/lib/bio/db.rb +329 -0
  56. data/lib/bio/db/aaindex.rb +357 -0
  57. data/lib/bio/db/embl/common.rb +336 -0
  58. data/lib/bio/db/embl/embl.rb +402 -0
  59. data/lib/bio/db/embl/sptr.rb +1283 -0
  60. data/lib/bio/db/embl/swissprot.rb +42 -0
  61. data/lib/bio/db/embl/trembl.rb +41 -0
  62. data/lib/bio/db/embl/uniprot.rb +42 -0
  63. data/lib/bio/db/fantom.rb +599 -0
  64. data/lib/bio/db/fasta.rb +907 -0
  65. data/lib/bio/db/genbank/common.rb +290 -0
  66. data/lib/bio/db/genbank/ddbj.rb +22 -0
  67. data/lib/bio/db/genbank/genbank.rb +215 -0
  68. data/lib/bio/db/genbank/genpept.rb +60 -0
  69. data/lib/bio/db/genbank/refseq.rb +18 -0
  70. data/lib/bio/db/gff.rb +174 -0
  71. data/lib/bio/db/go.rb +481 -0
  72. data/lib/bio/db/kegg/brite.rb +41 -0
  73. data/lib/bio/db/kegg/compound.rb +131 -0
  74. data/lib/bio/db/kegg/drug.rb +98 -0
  75. data/lib/bio/db/kegg/enzyme.rb +148 -0
  76. data/lib/bio/db/kegg/expression.rb +155 -0
  77. data/lib/bio/db/kegg/genes.rb +263 -0
  78. data/lib/bio/db/kegg/genome.rb +241 -0
  79. data/lib/bio/db/kegg/glycan.rb +170 -0
  80. data/lib/bio/db/kegg/keggtab.rb +357 -0
  81. data/lib/bio/db/kegg/kgml.rb +256 -0
  82. data/lib/bio/db/kegg/orthology.rb +136 -0
  83. data/lib/bio/db/kegg/reaction.rb +82 -0
  84. data/lib/bio/db/kegg/taxonomy.rb +331 -0
  85. data/lib/bio/db/lasergene.rb +209 -0
  86. data/lib/bio/db/litdb.rb +107 -0
  87. data/lib/bio/db/medline.rb +323 -0
  88. data/lib/bio/db/nbrf.rb +191 -0
  89. data/lib/bio/db/newick.rb +658 -0
  90. data/lib/bio/db/nexus.rb +1854 -0
  91. data/lib/bio/db/pdb.rb +29 -0
  92. data/lib/bio/db/pdb/atom.rb +77 -0
  93. data/lib/bio/db/pdb/chain.rb +210 -0
  94. data/lib/bio/db/pdb/chemicalcomponent.rb +224 -0
  95. data/lib/bio/db/pdb/model.rb +148 -0
  96. data/lib/bio/db/pdb/pdb.rb +1911 -0
  97. data/lib/bio/db/pdb/residue.rb +176 -0
  98. data/lib/bio/db/pdb/utils.rb +399 -0
  99. data/lib/bio/db/prosite.rb +597 -0
  100. data/lib/bio/db/rebase.rb +457 -0
  101. data/lib/bio/db/soft.rb +404 -0
  102. data/lib/bio/db/transfac.rb +375 -0
  103. data/lib/bio/feature.rb +226 -0
  104. data/lib/bio/io/das.rb +461 -0
  105. data/lib/bio/io/dbget.rb +194 -0
  106. data/lib/bio/io/ddbjxml.rb +581 -0
  107. data/lib/bio/io/ebisoap.rb +158 -0
  108. data/lib/bio/io/ensembl.rb +229 -0
  109. data/lib/bio/io/fastacmd.rb +163 -0
  110. data/lib/bio/io/fetch.rb +181 -0
  111. data/lib/bio/io/flatfile.rb +1309 -0
  112. data/lib/bio/io/flatfile/bdb.rb +253 -0
  113. data/lib/bio/io/flatfile/index.rb +1371 -0
  114. data/lib/bio/io/flatfile/indexer.rb +787 -0
  115. data/lib/bio/io/higet.rb +73 -0
  116. data/lib/bio/io/hinv.rb +442 -0
  117. data/lib/bio/io/keggapi.rb +805 -0
  118. data/lib/bio/io/ncbirest.rb +256 -0
  119. data/lib/bio/io/ncbisoap.rb +155 -0
  120. data/lib/bio/io/pubmed.rb +307 -0
  121. data/lib/bio/io/registry.rb +292 -0
  122. data/lib/bio/io/soapwsdl.rb +119 -0
  123. data/lib/bio/io/sql.rb +365 -0
  124. data/lib/bio/location.rb +772 -0
  125. data/lib/bio/map.rb +410 -0
  126. data/lib/bio/pathway.rb +854 -0
  127. data/lib/bio/reference.rb +623 -0
  128. data/lib/bio/sequence.rb +475 -0
  129. data/lib/bio/sequence/aa.rb +125 -0
  130. data/lib/bio/sequence/common.rb +333 -0
  131. data/lib/bio/sequence/compat.rb +123 -0
  132. data/lib/bio/sequence/format.rb +181 -0
  133. data/lib/bio/sequence/generic.rb +24 -0
  134. data/lib/bio/sequence/na.rb +491 -0
  135. data/lib/bio/shell.rb +44 -0
  136. data/lib/bio/shell/core.rb +578 -0
  137. data/lib/bio/shell/demo.rb +146 -0
  138. data/lib/bio/shell/interface.rb +218 -0
  139. data/lib/bio/shell/irb.rb +95 -0
  140. data/lib/bio/shell/object.rb +71 -0
  141. data/lib/bio/shell/plugin/blast.rb +42 -0
  142. data/lib/bio/shell/plugin/codon.rb +218 -0
  143. data/lib/bio/shell/plugin/das.rb +58 -0
  144. data/lib/bio/shell/plugin/emboss.rb +23 -0
  145. data/lib/bio/shell/plugin/entry.rb +105 -0
  146. data/lib/bio/shell/plugin/flatfile.rb +101 -0
  147. data/lib/bio/shell/plugin/keggapi.rb +181 -0
  148. data/lib/bio/shell/plugin/midi.rb +430 -0
  149. data/lib/bio/shell/plugin/obda.rb +45 -0
  150. data/lib/bio/shell/plugin/psort.rb +56 -0
  151. data/lib/bio/shell/plugin/seq.rb +247 -0
  152. data/lib/bio/shell/plugin/soap.rb +87 -0
  153. data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/bioruby_generator.rb +29 -0
  154. data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/_classes.rhtml +4 -0
  155. data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/_log.rhtml +27 -0
  156. data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/_methods.rhtml +11 -0
  157. data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/_modules.rhtml +4 -0
  158. data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/_variables.rhtml +7 -0
  159. data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby-bg.gif +0 -0
  160. data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby-gem.png +0 -0
  161. data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby-link.gif +0 -0
  162. data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby.css +368 -0
  163. data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby.rhtml +47 -0
  164. data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby_controller.rb +144 -0
  165. data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby_helper.rb +47 -0
  166. data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/commands.rhtml +8 -0
  167. data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/history.rhtml +10 -0
  168. data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/index.rhtml +26 -0
  169. data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/spinner.gif +0 -0
  170. data/lib/bio/shell/script.rb +25 -0
  171. data/lib/bio/shell/setup.rb +109 -0
  172. data/lib/bio/shell/web.rb +102 -0
  173. data/lib/bio/tree.rb +850 -0
  174. data/lib/bio/util/color_scheme.rb +191 -0
  175. data/lib/bio/util/color_scheme/buried.rb +59 -0
  176. data/lib/bio/util/color_scheme/helix.rb +59 -0
  177. data/lib/bio/util/color_scheme/hydropathy.rb +64 -0
  178. data/lib/bio/util/color_scheme/nucleotide.rb +31 -0
  179. data/lib/bio/util/color_scheme/strand.rb +59 -0
  180. data/lib/bio/util/color_scheme/taylor.rb +50 -0
  181. data/lib/bio/util/color_scheme/turn.rb +59 -0
  182. data/lib/bio/util/color_scheme/zappo.rb +50 -0
  183. data/lib/bio/util/contingency_table.rb +370 -0
  184. data/lib/bio/util/restriction_enzyme.rb +228 -0
  185. data/lib/bio/util/restriction_enzyme/analysis.rb +249 -0
  186. data/lib/bio/util/restriction_enzyme/analysis_basic.rb +217 -0
  187. data/lib/bio/util/restriction_enzyme/cut_symbol.rb +107 -0
  188. data/lib/bio/util/restriction_enzyme/double_stranded.rb +321 -0
  189. data/lib/bio/util/restriction_enzyme/double_stranded/aligned_strands.rb +130 -0
  190. data/lib/bio/util/restriction_enzyme/double_stranded/cut_location_pair.rb +103 -0
  191. data/lib/bio/util/restriction_enzyme/double_stranded/cut_location_pair_in_enzyme_notation.rb +38 -0
  192. data/lib/bio/util/restriction_enzyme/double_stranded/cut_locations.rb +76 -0
  193. data/lib/bio/util/restriction_enzyme/double_stranded/cut_locations_in_enzyme_notation.rb +107 -0
  194. data/lib/bio/util/restriction_enzyme/enzymes.yaml +7061 -0
  195. data/lib/bio/util/restriction_enzyme/range/cut_range.rb +24 -0
  196. data/lib/bio/util/restriction_enzyme/range/cut_ranges.rb +47 -0
  197. data/lib/bio/util/restriction_enzyme/range/horizontal_cut_range.rb +67 -0
  198. data/lib/bio/util/restriction_enzyme/range/sequence_range.rb +257 -0
  199. data/lib/bio/util/restriction_enzyme/range/sequence_range/calculated_cuts.rb +242 -0
  200. data/lib/bio/util/restriction_enzyme/range/sequence_range/fragment.rb +51 -0
  201. data/lib/bio/util/restriction_enzyme/range/sequence_range/fragments.rb +41 -0
  202. data/lib/bio/util/restriction_enzyme/range/vertical_cut_range.rb +77 -0
  203. data/lib/bio/util/restriction_enzyme/single_strand.rb +199 -0
  204. data/lib/bio/util/restriction_enzyme/single_strand/cut_locations_in_enzyme_notation.rb +135 -0
  205. data/lib/bio/util/restriction_enzyme/single_strand_complement.rb +23 -0
  206. data/lib/bio/util/restriction_enzyme/string_formatting.rb +111 -0
  207. data/lib/bio/util/sirna.rb +288 -0
  208. data/sample/any2fasta.rb +59 -0
  209. data/sample/biofetch.rb +475 -0
  210. data/sample/color_scheme_na.rb +91 -0
  211. data/sample/dbget +37 -0
  212. data/sample/enzymes.rb +78 -0
  213. data/sample/fasta2tab.rb +99 -0
  214. data/sample/fastagrep.rb +72 -0
  215. data/sample/fastasort.rb +54 -0
  216. data/sample/fsplit.rb +51 -0
  217. data/sample/gb2fasta.rb +30 -0
  218. data/sample/gb2tab.rb +325 -0
  219. data/sample/gbtab2mysql.rb +161 -0
  220. data/sample/genes2nuc.rb +33 -0
  221. data/sample/genes2pep.rb +33 -0
  222. data/sample/genes2tab.rb +81 -0
  223. data/sample/genome2rb.rb +29 -0
  224. data/sample/genome2tab.rb +76 -0
  225. data/sample/goslim.rb +303 -0
  226. data/sample/gt2fasta.rb +47 -0
  227. data/sample/na2aa.rb +34 -0
  228. data/sample/pmfetch.rb +42 -0
  229. data/sample/pmsearch.rb +42 -0
  230. data/sample/psortplot_html.rb +214 -0
  231. data/sample/ssearch2tab.rb +96 -0
  232. data/sample/tdiary.rb +158 -0
  233. data/sample/tfastx2tab.rb +100 -0
  234. data/sample/vs-genes.rb +212 -0
  235. data/test/data/HMMER/hmmpfam.out +64 -0
  236. data/test/data/HMMER/hmmsearch.out +88 -0
  237. data/test/data/SOSUI/sample.report +11 -0
  238. data/test/data/TMHMM/sample.report +21 -0
  239. data/test/data/aaindex/DAYM780301 +30 -0
  240. data/test/data/aaindex/PRAM900102 +20 -0
  241. data/test/data/bl2seq/cd8a_cd8b_blastp.bl2seq +53 -0
  242. data/test/data/bl2seq/cd8a_p53_e-5blastp.bl2seq +37 -0
  243. data/test/data/blast/2.2.15.blastp.m7 +876 -0
  244. data/test/data/blast/b0002.faa +15 -0
  245. data/test/data/blast/b0002.faa.m0 +128 -0
  246. data/test/data/blast/b0002.faa.m7 +65 -0
  247. data/test/data/blast/b0002.faa.m8 +1 -0
  248. data/test/data/embl/AB090716.embl +65 -0
  249. data/test/data/embl/AB090716.embl.rel89 +63 -0
  250. data/test/data/fasta/example1.txt +75 -0
  251. data/test/data/fasta/example2.txt +21 -0
  252. data/test/data/genscan/sample.report +63 -0
  253. data/test/data/iprscan/merged.raw +32 -0
  254. data/test/data/iprscan/merged.txt +74 -0
  255. data/test/data/prosite/prosite.dat +2233 -0
  256. data/test/data/refseq/nm_126355.entret +64 -0
  257. data/test/data/soft/GDS100_partial.soft +92 -0
  258. data/test/data/soft/GSE3457_family_partial.soft +874 -0
  259. data/test/data/uniprot/p53_human.uniprot +1456 -0
  260. data/test/functional/bio/io/test_ensembl.rb +186 -0
  261. data/test/functional/bio/io/test_soapwsdl.rb +52 -0
  262. data/test/runner.rb +14 -0
  263. data/test/unit/bio/appl/bl2seq/test_report.rb +134 -0
  264. data/test/unit/bio/appl/blast/test_report.rb +417 -0
  265. data/test/unit/bio/appl/blast/test_xmlparser.rb +388 -0
  266. data/test/unit/bio/appl/genscan/test_report.rb +182 -0
  267. data/test/unit/bio/appl/hmmer/test_report.rb +342 -0
  268. data/test/unit/bio/appl/iprscan/test_report.rb +338 -0
  269. data/test/unit/bio/appl/mafft/test_report.rb +63 -0
  270. data/test/unit/bio/appl/sosui/test_report.rb +81 -0
  271. data/test/unit/bio/appl/targetp/test_report.rb +146 -0
  272. data/test/unit/bio/appl/test_blast.rb +163 -0
  273. data/test/unit/bio/appl/test_fasta.rb +130 -0
  274. data/test/unit/bio/appl/test_pts1.rb +140 -0
  275. data/test/unit/bio/appl/tmhmm/test_report.rb +126 -0
  276. data/test/unit/bio/data/test_aa.rb +90 -0
  277. data/test/unit/bio/data/test_codontable.rb +107 -0
  278. data/test/unit/bio/data/test_na.rb +80 -0
  279. data/test/unit/bio/db/embl/test_common.rb +117 -0
  280. data/test/unit/bio/db/embl/test_embl.rb +214 -0
  281. data/test/unit/bio/db/embl/test_embl_rel89.rb +219 -0
  282. data/test/unit/bio/db/embl/test_sptr.rb +1775 -0
  283. data/test/unit/bio/db/embl/test_uniprot.rb +31 -0
  284. data/test/unit/bio/db/kegg/test_genes.rb +45 -0
  285. data/test/unit/bio/db/pdb/test_pdb.rb +152 -0
  286. data/test/unit/bio/db/test_aaindex.rb +197 -0
  287. data/test/unit/bio/db/test_fasta.rb +250 -0
  288. data/test/unit/bio/db/test_gff.rb +127 -0
  289. data/test/unit/bio/db/test_lasergene.rb +95 -0
  290. data/test/unit/bio/db/test_newick.rb +293 -0
  291. data/test/unit/bio/db/test_nexus.rb +360 -0
  292. data/test/unit/bio/db/test_prosite.rb +1437 -0
  293. data/test/unit/bio/db/test_rebase.rb +101 -0
  294. data/test/unit/bio/db/test_soft.rb +138 -0
  295. data/test/unit/bio/io/test_ddbjxml.rb +75 -0
  296. data/test/unit/bio/io/test_ensembl.rb +109 -0
  297. data/test/unit/bio/io/test_fastacmd.rb +42 -0
  298. data/test/unit/bio/io/test_flatfile.rb +237 -0
  299. data/test/unit/bio/io/test_soapwsdl.rb +32 -0
  300. data/test/unit/bio/sequence/test_aa.rb +103 -0
  301. data/test/unit/bio/sequence/test_common.rb +174 -0
  302. data/test/unit/bio/sequence/test_compat.rb +69 -0
  303. data/test/unit/bio/sequence/test_na.rb +330 -0
  304. data/test/unit/bio/shell/plugin/test_seq.rb +185 -0
  305. data/test/unit/bio/test_alignment.rb +1025 -0
  306. data/test/unit/bio/test_command.rb +288 -0
  307. data/test/unit/bio/test_db.rb +96 -0
  308. data/test/unit/bio/test_feature.rb +116 -0
  309. data/test/unit/bio/test_location.rb +39 -0
  310. data/test/unit/bio/test_map.rb +230 -0
  311. data/test/unit/bio/test_pathway.rb +473 -0
  312. data/test/unit/bio/test_reference.rb +224 -0
  313. data/test/unit/bio/test_sequence.rb +329 -0
  314. data/test/unit/bio/test_shell.rb +18 -0
  315. data/test/unit/bio/test_tree.rb +593 -0
  316. data/test/unit/bio/util/restriction_enzyme/analysis/test_calculated_cuts.rb +299 -0
  317. data/test/unit/bio/util/restriction_enzyme/analysis/test_cut_ranges.rb +103 -0
  318. data/test/unit/bio/util/restriction_enzyme/analysis/test_sequence_range.rb +240 -0
  319. data/test/unit/bio/util/restriction_enzyme/double_stranded/test_aligned_strands.rb +101 -0
  320. data/test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_location_pair.rb +75 -0
  321. data/test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_location_pair_in_enzyme_notation.rb +73 -0
  322. data/test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_locations.rb +53 -0
  323. data/test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_locations_in_enzyme_notation.rb +104 -0
  324. data/test/unit/bio/util/restriction_enzyme/single_strand/test_cut_locations_in_enzyme_notation.rb +83 -0
  325. data/test/unit/bio/util/restriction_enzyme/test_analysis.rb +246 -0
  326. data/test/unit/bio/util/restriction_enzyme/test_cut_symbol.rb +44 -0
  327. data/test/unit/bio/util/restriction_enzyme/test_double_stranded.rb +115 -0
  328. data/test/unit/bio/util/restriction_enzyme/test_single_strand.rb +147 -0
  329. data/test/unit/bio/util/restriction_enzyme/test_single_strand_complement.rb +147 -0
  330. data/test/unit/bio/util/restriction_enzyme/test_string_formatting.rb +60 -0
  331. data/test/unit/bio/util/test_color_scheme.rb +33 -0
  332. data/test/unit/bio/util/test_contingency_table.rb +94 -0
  333. data/test/unit/bio/util/test_restriction_enzyme.rb +42 -0
  334. data/test/unit/bio/util/test_sirna.rb +245 -0
  335. metadata +479 -0
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # = BioRuby shell - command line interface for the BioRuby library
4
+ #
5
+ # Copyright:: Copyright (C) 2005, 2006, 2007
6
+ # Toshiaki Katayama <k@bioruby.org>
7
+ # License:: The Ruby License
8
+ #
9
+ # $Id: bioruby,v 1.21 2007/07/26 10:46:46 k Exp $
10
+ #
11
+
12
+ begin
13
+ require 'rubygems'
14
+ gem 'bio', '>= 1.1.0'
15
+ rescue LoadError
16
+ require 'bio'
17
+ end
18
+ require 'bio/shell'
19
+
20
+ # required to run commands (getseq, ls etc.)
21
+ include Bio::Shell
22
+
23
+ # setup command line options, working directory, and irb configurations
24
+ Bio::Shell::Setup.new
25
+
26
+ # loading workspace and command history
27
+ Bio::Shell.load_session
28
+
29
+ # main loop
30
+ if Bio::Shell.cache[:rails]
31
+ Bio::Shell.cache[:rails].join
32
+ else
33
+ Signal.trap("SIGINT") do
34
+ Bio::Shell.cache[:irb].signal_handle
35
+ end
36
+
37
+ catch(:IRB_EXIT) do
38
+ Bio::Shell.cache[:irb].eval_input
39
+ end
40
+ end
41
+
42
+ # saving workspace, command history and configuration before exit
43
+ Bio::Shell.save_session
44
+
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # = biofetch - BioFetch client
4
+ #
5
+ # Copyright:: Copyright (C) 2002
6
+ # Toshiaki Katayama <k@bioruby.org>
7
+ # License:: The Ruby License
8
+ #
9
+ # $Id: br_biofetch.rb,v 1.4 2007/04/05 23:35:39 trevor Exp $
10
+ #
11
+
12
+ require 'bio/io/fetch'
13
+
14
+ def usage
15
+ default_url = 'http://bioruby.org/cgi-bin/biofetch.rb'
16
+ another_url = 'http://www.ebi.ac.uk/cgi-bin/dbfetch'
17
+ puts "#{$0} [-s[erver] #{another_url}] db id [style] [format]"
18
+ puts " server : URL of the BioFetch CGI (default is #{default_url})"
19
+ puts " db : database name (embl, genbank, etc.)"
20
+ puts " id : entry id"
21
+ puts " style : 'raw' or 'html' (default is 'raw')"
22
+ puts " format : change the output format ('default', 'fasta', etc.)"
23
+ end
24
+
25
+ if ARGV.empty? or ARGV[0] =~ /^--?h/
26
+ usage
27
+ exit 1
28
+ end
29
+
30
+ case ARGV[0]
31
+ when /^--?s/ # User specified server
32
+ ARGV.shift
33
+ serv = Bio::Fetch.new(ARGV.shift)
34
+ puts serv.fetch(*ARGV)
35
+ when /^--?e/ # EBI server
36
+ ARGV.shift
37
+ serv = Bio::Fetch.new('http://www.ebi.ac.uk/cgi-bin/dbfetch')
38
+ puts serv.fetch(*ARGV)
39
+ when /^--?r/ # BioRuby server
40
+ ARGV.shift
41
+ serv = Bio::Fetch.new('http://bioruby.org/cgi-bin/biofetch.rb')
42
+ puts serv.fetch(*ARGV)
43
+ else # Default server
44
+ puts Bio::Fetch.query(*ARGV)
45
+ end
46
+
47
+
@@ -0,0 +1,282 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # = bioflat - OBDA flat file indexer (executable)
4
+ #
5
+ # Copyright:: Copyright (C) 2002
6
+ # Naohisa Goto <ng@bioruby.org>
7
+ # License:: The Ruby License
8
+ #
9
+ # $Id: br_bioflat.rb,v 1.17 2007/04/05 23:35:39 trevor Exp $
10
+ #
11
+
12
+ require 'bio'
13
+
14
+ def usage
15
+ print <<EOM
16
+ Search:
17
+ #{$0} [--search] [options...] [DIR/]DBNAME KEYWORDS
18
+ or
19
+ #{$0} [--search] --location DIR --dbname DBNAME [options...] KEYWORDS
20
+
21
+ Search options:
22
+ --namespace NAME set serch namespace to NAME
23
+ (or --name NAME) You can set this option many times to specify
24
+ more than one namespace.
25
+
26
+ Create index:
27
+ #{$0} --create --location DIR --dbname DBNAME [--format <genbank|embl|fasta>] [options...] [--files] FILES
28
+ Update index:
29
+ #{$0} --update --location DIR --dbname DBNAME [options...] [--files] FILES
30
+
31
+ Create index options:
32
+ --primary=UNIQUE set primary namespece to UNIQUE
33
+ Default primary/secondary namespaces depend on
34
+ each format of flatfiles.
35
+ --secondary=KEY set secondary namespaces.
36
+ You may use this option many times to specify
37
+ more than one namespace.
38
+ --add-secondary=KEY add secondary namespaces to default specification.
39
+ You can use this option many times.
40
+
41
+ Options only valid for --create (or --update) --type flat:
42
+ --sort=/path/to/sort use external sort program (e.g. /usr/bin/sort)
43
+ --sort=BUILTIN use builtin sort routine
44
+
45
+ Options only valid for --update:
46
+ --renew re-read all flatfiles and update whole index
47
+
48
+ Backward compatibility:
49
+ --makeindex DIR/DBNAME
50
+ same as --create --type flat --location DIR --dbname DBNAME
51
+ --makeindexBDB DIR/DBNAME
52
+ same as --create --type bdb --location DIR --dbname DBNAME
53
+ --format=CLASS
54
+ instead of genbank|embl|fasta, specifing a class name is allowed
55
+
56
+ Show namespaces:
57
+ #{$0} --show-namespaces [--location DIR --dbname DBNAME] [DIR/DBNAME]
58
+ or
59
+ #{$0} --show-namespaces [--format=CLASS]
60
+ or
61
+ #{$0} --show-namespaces --files file
62
+
63
+ EOM
64
+
65
+ end
66
+
67
+
68
+ def do_index(mode = :create)
69
+ case ARGV[0]
70
+ when /^\-\-?make/
71
+ dbpath = ARGV[1]
72
+ args = ARGV[2..-1]
73
+ is_bdb = nil
74
+ when /^\-\-?make.*bdb/i
75
+ dbname = ARGV[1]
76
+ args = ARGV[2..-1]
77
+ is_bdb = Bio::FlatFileIndex::MAGIC_BDB
78
+ when /^\-\-create/, /^\-\-update/
79
+ args = ARGV[1..-1]
80
+ else
81
+ usage
82
+ end
83
+
84
+ options = {}
85
+
86
+ while args.first =~ /^\-/
87
+ case x = args.shift
88
+
89
+ # OBDA stuff
90
+
91
+ when /^\-\-?format/
92
+ args.shift
93
+ format = nil # throw this f*ckin' mess for auto detect :)
94
+ when /^\-\-?location/
95
+ location = args.shift.chomp('/')
96
+ when /^\-\-?dbname/
97
+ dbname = args.shift
98
+ when /^\-\-?(index)?type/
99
+ indextype = args.shift
100
+ case indextype
101
+ when /bdb/
102
+ is_bdb = Bio::FlatFileIndex::MAGIC_BDB
103
+ when /flat/
104
+ is_bdb = nil
105
+ else
106
+ usage
107
+ end
108
+
109
+ # BioRuby extension
110
+
111
+ when /^\-\-?files/i
112
+ break
113
+
114
+ when /^\-\-?format\=(.*)/i
115
+ format = $1
116
+
117
+ when /^\-\-?sort\=(.*)/i
118
+ options['sort_program'] = $1
119
+ options['onmemory'] = nil
120
+ when /^\-\-?no\-?te?mp/i
121
+ options['onmemory'] = true
122
+
123
+ when /^\-\-?primary.*\=(.*)/i
124
+ options['primary_namespace'] = $1
125
+
126
+ when /^\-\-?add-secondary.*\=(.*)/i
127
+ unless options['additional_secondary_namespaces'] then
128
+ options['additional_secondary_namespaces'] = []
129
+ end
130
+ options['additional_secondary_namespaces'] << $1 if $1.length > 0
131
+
132
+ when /^\-\-?secondary.*\=(.*)/i
133
+ unless options['secondary_namespaces'] then
134
+ options['secondary_namespaces'] = []
135
+ end
136
+ options['secondary_namespaces'] << $1 if $1.length > 0
137
+
138
+ when /^\-\-?renew/
139
+ options['renew'] = true
140
+
141
+ else
142
+ $stderr.print "Warning: ignoring invalid option #{x.inspect}\n"
143
+ end
144
+ end
145
+
146
+ dbpath = File.join(location, dbname) unless dbpath
147
+ if mode == :update then
148
+ Bio::FlatFileIndex::update_index(dbpath, format, options, *args)
149
+ else
150
+ Bio::FlatFileIndex::makeindex(is_bdb, dbpath, format, options, *args)
151
+ end
152
+ end
153
+
154
+
155
+ def do_search
156
+ dbname = nil
157
+ location = nil
158
+ names = []
159
+ while x = ARGV.shift
160
+ case x
161
+ when /\A\-\-?search/i
162
+ #do nothing
163
+ when /\A\-\-?location/i
164
+ location = ARGV.shift.to_s.chomp('/')
165
+ when /\A\-\-?dbname/i
166
+ dbname = ARGV.shift
167
+ when /\A\-\-?name(?:space)?(?:\=(.+))?/i
168
+ if $1 then
169
+ names << $1
170
+ elsif x = ARGV.shift
171
+ names << x
172
+ end
173
+ else
174
+ ARGV.unshift x
175
+ break
176
+ end
177
+ end
178
+ dbname = ARGV.shift unless dbname
179
+ dbname = File.join(location, dbname) unless location.to_s.empty?
180
+ db = Bio::FlatFileIndex.open(dbname)
181
+ ARGV.each do |key|
182
+ $stderr.print "Searching for \'#{key}\'...\n"
183
+ #r = db.search(key)
184
+ #$stderr.print "OK, #{r.size} entry found\n"
185
+ #if r.size > 0 then
186
+ # print r
187
+ #end
188
+ begin
189
+ if names.empty? then
190
+ r = db.include?(key)
191
+ else
192
+ r = db.include_in_namespaces?(key, *names)
193
+ end
194
+ rescue RuntimeError
195
+ $stderr.print "ERROR: #{$!}\n"
196
+ next
197
+ end
198
+ r = [] unless r
199
+ $stderr.print "OK, #{r.size} entry found\n"
200
+ r.each do |i|
201
+ print db.search_primary(i)
202
+ end
203
+ end
204
+ db.close
205
+ end
206
+
207
+
208
+ def do_show_namespaces
209
+ dbname = nil
210
+ location = nil
211
+ files = nil
212
+ format = nil
213
+ names = []
214
+ while x = ARGV.shift
215
+ case x
216
+ when /\A\-\-?(show\-)?name(space)?s/i
217
+ #do nothing
218
+ when /\A\-\-?location/i
219
+ location = ARGV.shift.to_s.chomp('/')
220
+ when /\A\-\-?dbname/i
221
+ dbname = ARGV.shift
222
+ when /\A\-\-?format(?:\=(.+))?/i
223
+ if $1 then
224
+ format = $1
225
+ elsif x = ARGV.shift
226
+ format = x
227
+ end
228
+ when /\A\-\-?files/i
229
+ files = ARGV
230
+ break
231
+ else
232
+ ARGV.unshift x
233
+ break
234
+ end
235
+ end
236
+ if files then
237
+ k = nil
238
+ files.each do |x|
239
+ k = Bio::FlatFile.autodetect_file(x)
240
+ break if k
241
+ end
242
+ if k then
243
+ $stderr.print "Format: #{k.to_s}\n"
244
+ format = k
245
+ else
246
+ $stderr.print "ERROR: couldn't determine file format\n"
247
+ return
248
+ end
249
+ end
250
+ $stderr.print "Namespaces: (first line: primary namespace)\n"
251
+ if format then
252
+ parser = Bio::FlatFileIndex::Indexer::Parser.new(format)
253
+ print parser.primary.name, "\n"
254
+ puts parser.secondary.keys
255
+ else
256
+ dbname = ARGV.shift unless dbname
257
+ dbname = File.join(location, dbname) unless location.to_s.empty?
258
+ db = Bio::FlatFileIndex.open(dbname)
259
+ puts db.namespaces
260
+ db.close
261
+ end
262
+ end
263
+
264
+ if ARGV.size > 1
265
+ case ARGV[0]
266
+ when /--make/, /--create/
267
+ Bio::FlatFileIndex::DEBUG.out = true
268
+ do_index
269
+ when /--update/
270
+ Bio::FlatFileIndex::DEBUG.out = true
271
+ do_index(:update)
272
+ when /\A\-\-?(show\-)?name(space)?s/i
273
+ do_show_namespaces
274
+ when /--search/
275
+ do_search
276
+ else #default is search
277
+ do_search
278
+ end
279
+ else
280
+ usage
281
+ end
282
+
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # = biogetseq - OBDA sequence data retrieval (executable)
4
+ #
5
+ # Copyright:: Copyright (C) 2003
6
+ # Toshiaki Katayama <k@bioruby.org>
7
+ # License:: The Ruby License
8
+ #
9
+ # $Id: br_biogetseq.rb,v 1.4 2007/04/05 23:35:39 trevor Exp $
10
+ #
11
+
12
+ require 'bio'
13
+
14
+ def usage
15
+ print <<END
16
+ #{$0} --dbname <dbname> [--namespace <namespace>] entry_id [entry_id]
17
+ END
18
+ exit 1
19
+ end
20
+
21
+ if ARGV.size < 3
22
+ usage
23
+ end
24
+
25
+ while ARGV.first =~ /^-/
26
+ case ARGV.shift
27
+ when /^\-\-format/
28
+ ARGV.shift
29
+ raise NotImplementedError
30
+ when /^\-\-dbname/
31
+ dbname = ARGV.shift
32
+ when /^\-\-namespace/
33
+ namespace = ARGV.shift
34
+ end
35
+ end
36
+
37
+ reg = Bio::Registry.new
38
+ db = reg.get_database(dbname)
39
+ if namespace
40
+ db['namespace'] = namespace
41
+ end
42
+ ARGV.each do |entry|
43
+ puts db.get_by_id(entry)
44
+ end
45
+
@@ -0,0 +1,421 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # = pmfetch - PubMed client
4
+ #
5
+ # Copyright:: Copyright (C) 2004, 2005
6
+ # Toshiaki Katayama <k@bioruby.org>
7
+ # License:: The Ruby License
8
+ #
9
+ # $Id: br_pmfetch.rb,v 1.7 2007/04/05 23:35:39 trevor Exp $
10
+ #
11
+
12
+ PROG_VER = '$Id: br_pmfetch.rb,v 1.7 2007/04/05 23:35:39 trevor Exp $'
13
+ PROG_NAME = File.basename($0)
14
+
15
+
16
+ require 'getoptlong'
17
+ require 'bio'
18
+
19
+
20
+ ### formatting
21
+
22
+ class String
23
+ def fill(fill_column = 80, prefix = '', separater = ' ')
24
+ prefix = ' ' * prefix if prefix.is_a?(Integer)
25
+ maxlen = fill_column - prefix.length
26
+ raise "prefix is longer than fill_column" if maxlen <= 0
27
+
28
+ cursor = pos = 0
29
+ lines = []
30
+ while cursor < self.length
31
+ line = self[cursor, maxlen]
32
+ pos = line.rindex(separater)
33
+ pos = nil if line.length < maxlen
34
+ if pos
35
+ len = pos + separater.length
36
+ lines << self[cursor, len]
37
+ cursor += len
38
+ else
39
+ lines << self[cursor, maxlen]
40
+ cursor += maxlen
41
+ end
42
+ end
43
+ return lines.join("\n#{prefix}")
44
+ end
45
+ end
46
+
47
+
48
+ module Bio
49
+ class Reference
50
+ def report
51
+ if (num = @authors.size) > 10
52
+ authors = "#{@authors[0]} et al. (#{num} authors)"
53
+ elsif num > 4
54
+ sep = ',' * (num - 1)
55
+ authors = "#{@authors[0]}#{sep} #{@authors[-1]}"
56
+ else
57
+ authors = authors_join(' & ')
58
+ end
59
+ journal = "#{@journal} #{@year} #{@volume}(#{@issue}):#{@pages}"
60
+
61
+ indent = 8
62
+ prefix = ' ' * indent
63
+ [
64
+ "#{@pages[/\d+/]}".ljust(indent) + "#{@title}".fill(78, indent),
65
+ authors,
66
+ "#{journal} [PMID:#{@pubmed}]",
67
+ ].join("\n#{prefix}")
68
+ end
69
+ end
70
+ end
71
+
72
+
73
+ class PMFetch
74
+
75
+ class Examples < StandardError; end
76
+ class Version < StandardError; end
77
+ class Usage < StandardError; end
78
+
79
+ ### default options
80
+
81
+ def initialize
82
+ @format = 'rd'
83
+ @search_opts = {
84
+ 'retmax' => 20,
85
+ }
86
+ @query = nil
87
+ @query_opts = []
88
+ @pmid_list_only = false
89
+
90
+ pmfetch
91
+ end
92
+
93
+
94
+ ### main
95
+
96
+ def pmfetch
97
+ begin
98
+ set_options
99
+ parse_options
100
+ check_query
101
+ rescue PMFetch::Examples
102
+ puts examples
103
+ exit
104
+ rescue PMFetch::Version
105
+ puts version
106
+ exit
107
+ rescue PMFetch::Usage
108
+ puts usage
109
+ exit
110
+ rescue GetoptLong::MissingArgument, GetoptLong::InvalidOption
111
+ puts usage
112
+ exit
113
+ end
114
+
115
+ list = pm_esearch
116
+
117
+ if list.empty?
118
+ ;
119
+ elsif @pmid_list_only
120
+ puts list
121
+ else
122
+ pm_efetch(list)
123
+ end
124
+ end
125
+
126
+
127
+ ### help
128
+
129
+ def usage
130
+ %Q[
131
+ Usage: #{PROG_NAME} [options...] "query string"
132
+ or #{PROG_NAME} --query "query string" [other options...]
133
+
134
+ Options:
135
+ -q --query "genome AND virus" Query string for PubMed search
136
+ -t --title "mobile elements" Title of the article to search
137
+ -j --journal "genome res" Journal title to search
138
+ -v --volume # Journal volume to search
139
+ -i --issue # Journal issue to search
140
+ -p --page # First page number of the article to search
141
+ -a --author "Altschul SF" Author name to search
142
+ -m --mesh "SARS virus" MeSH term to search
143
+ -f --format bibtex Summary output format
144
+ --pmidlist Output only a list of PubMed IDs
145
+ -n --retmax # Number of articles to retrieve at the maximum
146
+ -N --retstart # Starting number of the articles to retrieve
147
+ -s --sort pub+date Sort method for the summary output
148
+ --reldate # Search articles published within recent # days
149
+ --mindate YYYY/MM/DD Search articles published after the date
150
+ --maxdate YYYY/MM/DD Search articles published before the date
151
+ --help Output this help, then exit
152
+ --examples Output examples, then exit
153
+ --version Output version number, then exit
154
+
155
+ Formats:
156
+ endnote, medline, bibitem, bibtex, report, rd,
157
+ nature, science, genome_res, genome_biol, nar, current, trends, cell
158
+
159
+ Sort:
160
+ author, journal, pub+date, page
161
+
162
+ See the following pages for the PubMed search options:
163
+ http://www.ncbi.nlm.nih.gov/entrez/query/static/help/pmhelp.html
164
+ http://www.ncbi.nlm.nih.gov/entrez/query/static/esearch_help.html
165
+
166
+ #{version}
167
+
168
+ ]
169
+ end
170
+
171
+ def version
172
+ PROG_VER
173
+ end
174
+
175
+ def examples
176
+ DATA.read.gsub('PMFetch', PROG_NAME)
177
+ end
178
+
179
+
180
+ private
181
+
182
+
183
+ ### options
184
+
185
+ def set_options
186
+ @parser = GetoptLong.new
187
+
188
+ @parser.set_options(
189
+ [ '--query', '-q', GetoptLong::REQUIRED_ARGUMENT ],
190
+ [ '--title', '-t', GetoptLong::REQUIRED_ARGUMENT ],
191
+ [ '--journal', '-j', GetoptLong::REQUIRED_ARGUMENT ],
192
+ [ '--volume', '-v', GetoptLong::REQUIRED_ARGUMENT ],
193
+ [ '--issue', '-i', GetoptLong::REQUIRED_ARGUMENT ],
194
+ [ '--page', '-p', GetoptLong::REQUIRED_ARGUMENT ],
195
+ [ '--author', '-a', GetoptLong::REQUIRED_ARGUMENT ],
196
+ [ '--mesh', '-m', GetoptLong::REQUIRED_ARGUMENT ],
197
+ [ '--format', '-f', GetoptLong::REQUIRED_ARGUMENT ],
198
+ [ '--pmidlist', GetoptLong::NO_ARGUMENT ],
199
+ [ '--retmax', '-n', GetoptLong::REQUIRED_ARGUMENT ],
200
+ [ '--retstart', '-N', GetoptLong::REQUIRED_ARGUMENT ],
201
+ [ '--sort', '-s', GetoptLong::REQUIRED_ARGUMENT ],
202
+ [ '--reldate', GetoptLong::REQUIRED_ARGUMENT ],
203
+ [ '--mindate', GetoptLong::REQUIRED_ARGUMENT ],
204
+ [ '--maxdate', GetoptLong::REQUIRED_ARGUMENT ],
205
+ [ '--examples', GetoptLong::NO_ARGUMENT ],
206
+ [ '--help', GetoptLong::NO_ARGUMENT ],
207
+ [ '--version', GetoptLong::NO_ARGUMENT ]
208
+ )
209
+ end
210
+
211
+ def parse_options
212
+ @parser.each_option do |optname, optarg|
213
+ case optname
214
+ when /--query/
215
+ @query = optarg
216
+ when /--title/
217
+ @query_opts << "#{optarg}[ti]"
218
+ when /--journal/
219
+ @query_opts << "#{optarg}[ta]"
220
+ when /--volume/
221
+ @query_opts << "#{optarg}[vi]"
222
+ when /--issue/
223
+ @query_opts << "#{optarg}[ip]"
224
+ when /--page/
225
+ @query_opts << "#{optarg}[pg]"
226
+ when /--author/
227
+ @query_opts << "#{optarg}[au]"
228
+ when /--mesh/
229
+ @query_opts << "#{optarg}[mh]"
230
+ when /--format/
231
+ @format = optarg
232
+ when /--pmidlist/
233
+ @pmid_list_only = true
234
+ when /--examples/
235
+ raise PMFetch::Examples
236
+ when /--help/
237
+ raise PMFetch::Usage
238
+ when /--version/
239
+ raise PMFetch::Version
240
+ when /--sort/
241
+ @sort = optarg
242
+ @search_opts["sort"] = @sort unless @sort == "page"
243
+ else
244
+ optname.delete!('-')
245
+ @search_opts[optname] = optarg
246
+ end
247
+ end
248
+ end
249
+
250
+
251
+ ### check query
252
+
253
+ def check_query
254
+ p @query if $DEBUG
255
+ @query ||= ARGV.join(" ") unless ARGV.empty?
256
+
257
+ p @query if $DEBUG
258
+ @query_str = [ @query, @query_opts ].flatten.compact.join(" AND ")
259
+
260
+ p @query_str if $DEBUG
261
+ if @query_str.empty?
262
+ raise PMFetch::Usage
263
+ end
264
+ end
265
+
266
+
267
+ ### search
268
+
269
+ def pm_esearch
270
+ return Bio::PubMed.esearch(@query_str, @search_opts)
271
+ end
272
+
273
+ def pm_efetch(list)
274
+ entries = Bio::PubMed.efetch(list)
275
+
276
+ if @format == 'medline'
277
+ medline_format(entries)
278
+ else
279
+ entries = parse_entries(entries)
280
+ if @sort == 'page'
281
+ entries = sort_entries(entries)
282
+ end
283
+ if @format == 'report'
284
+ report_format(entries)
285
+ else
286
+ other_format(entries)
287
+ end
288
+ end
289
+ end
290
+
291
+
292
+ ### output
293
+
294
+ def medline_format(entries)
295
+ entries.each do |entry|
296
+ puts entry
297
+ puts '//'
298
+ end
299
+ end
300
+
301
+ def parse_entries(entries)
302
+ entries.map { |entry| Bio::MEDLINE.new(entry) }
303
+ end
304
+
305
+ def sort_entries(entries)
306
+ if RUBY_VERSION > "1.8.0"
307
+ entries.sort_by { |x|
308
+ [ x.journal, x.volume.to_i, x.issue.to_i, x.pages.to_i ]
309
+ }
310
+ else
311
+ entries.map { |x|
312
+ [ x.journal, x.volume.to_i, x.issue.to_i, x.pages.to_i, x ]
313
+ }.sort { |a, b|
314
+ a[0..3] <=> b[0..3]
315
+ }.map { |y|
316
+ y.pop
317
+ }
318
+ end
319
+ end
320
+
321
+ def report_format(entries)
322
+ entries.each do |entry|
323
+ puts entry.reference.report
324
+ puts
325
+ end
326
+ end
327
+
328
+ def other_format(entries)
329
+ entries.each do |entry|
330
+ puts entry.reference.format(@format)
331
+ puts
332
+ end
333
+ end
334
+
335
+ end
336
+
337
+
338
+ PMFetch.new
339
+
340
+
341
+ __END__
342
+
343
+ = Examples : PubMed search
344
+
345
+ These four lines will do the same job.
346
+
347
+ % PMFetch transcription factor
348
+ % PMFetch "transcription factor"
349
+ % PMFetch --query "transcription factor"
350
+ % PMFetch -q "transcription factor"
351
+
352
+
353
+ Retrieve max 100 artiecles (20 is a NCBI's default) at a time, use --retmax as
354
+
355
+ % PMFetch -q "transcription factor" --retmax 100
356
+
357
+ and, to retrieve next 100 articles, use --retstart as
358
+
359
+ % PMFetch -q "transcription factor" --retmax 100 --retstart 100
360
+
361
+
362
+ You can narrow the search target for an issue of the journal.
363
+
364
+ % PMFetch --journal development --volume 131 --issue 3 transcription factor
365
+
366
+
367
+ Short options are also available.
368
+
369
+ % PMFetch -j development -v 131 -i 3 transcription factor
370
+
371
+
372
+ Search articles indexed in PubMed within these 90 days.
373
+
374
+ % PMFetch -q "transcription factor" --reldate 90
375
+
376
+
377
+ Search articles indexed in PubMed during the period of 2001/04/01 to 2001/08/31
378
+
379
+ % PMFetch -q "transcription factor" --mindate 2001/04/01 --maxdate 2001/08/31
380
+
381
+
382
+ Output format can be changed by --format option.
383
+
384
+ % PMFetch -q "transcription factor" -j development -v 131 -i 3 -f report
385
+ % PMFetch -q "transcription factor" -j development -v 131 -i 3 -f rd
386
+ % PMFetch -q "transcription factor" -j development -v 131 -i 3 -f endnote
387
+ % PMFetch -q "transcription factor" -j development -v 131 -i 3 -f medline
388
+ % PMFetch -q "transcription factor" -j development -v 131 -i 3 -f bibitem
389
+ % PMFetch -q "transcription factor" -j development -v 131 -i 3 -f bibtex
390
+ % PMFetch -q "transcription factor" -j development -v 131 -i 3 -f nature
391
+ % PMFetch -q "transcription factor" -j development -v 131 -i 3 -f science
392
+
393
+
394
+ Generate title listings for the journal report meeting (don't forget
395
+ to inclease the number of --retmax for fetching all titles).
396
+
397
+ % PMFetch -f report -j development -v 131 -i 3 -n 100
398
+
399
+
400
+ Search by author name.
401
+
402
+ % PMFetch -a "Karlin S"
403
+ % PMFetch -a "Koonin EV"
404
+
405
+
406
+ Search by MeSH term.
407
+
408
+ % PMFetch -m "computational biology"
409
+ % PMFetch -m "SARS virus"
410
+
411
+
412
+ Search by PubMed ID (PMID).
413
+
414
+ % PMFetch 12345
415
+
416
+
417
+ Output PMID only.
418
+
419
+ % PMFetch --pmidlist tardigrada
420
+
421
+