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.
- data/bin/bioruby +44 -0
- data/bin/br_biofetch.rb +47 -0
- data/bin/br_bioflat.rb +282 -0
- data/bin/br_biogetseq.rb +45 -0
- data/bin/br_pmfetch.rb +421 -0
- data/doc/Changes-0.7.rd +369 -0
- data/doc/KEGG_API.rd +1843 -0
- data/doc/KEGG_API.rd.ja +1834 -0
- data/doc/Tutorial.rd +1296 -0
- data/doc/Tutorial.rd.ja +2640 -0
- data/etc/bioinformatics/seqdatabase.ini +210 -0
- data/lib/bio.rb +279 -0
- data/lib/bio/alignment.rb +2518 -0
- data/lib/bio/appl/bl2seq/report.rb +334 -0
- data/lib/bio/appl/blast.rb +351 -0
- data/lib/bio/appl/blast/format0.rb +1438 -0
- data/lib/bio/appl/blast/format8.rb +83 -0
- data/lib/bio/appl/blast/report.rb +516 -0
- data/lib/bio/appl/blast/rexml.rb +135 -0
- data/lib/bio/appl/blast/rpsblast.rb +176 -0
- data/lib/bio/appl/blast/wublast.rb +550 -0
- data/lib/bio/appl/blast/xmlparser.rb +228 -0
- data/lib/bio/appl/blat/report.rb +489 -0
- data/lib/bio/appl/clustalw.rb +219 -0
- data/lib/bio/appl/clustalw/report.rb +152 -0
- data/lib/bio/appl/emboss.rb +203 -0
- data/lib/bio/appl/fasta.rb +237 -0
- data/lib/bio/appl/fasta/format10.rb +325 -0
- data/lib/bio/appl/gcg/msf.rb +212 -0
- data/lib/bio/appl/gcg/seq.rb +195 -0
- data/lib/bio/appl/genscan/report.rb +552 -0
- data/lib/bio/appl/hmmer.rb +126 -0
- data/lib/bio/appl/hmmer/report.rb +683 -0
- data/lib/bio/appl/iprscan/report.rb +374 -0
- data/lib/bio/appl/mafft.rb +259 -0
- data/lib/bio/appl/mafft/report.rb +226 -0
- data/lib/bio/appl/muscle.rb +52 -0
- data/lib/bio/appl/phylip/alignment.rb +129 -0
- data/lib/bio/appl/phylip/distance_matrix.rb +96 -0
- data/lib/bio/appl/probcons.rb +41 -0
- data/lib/bio/appl/psort.rb +548 -0
- data/lib/bio/appl/psort/report.rb +457 -0
- data/lib/bio/appl/pts1.rb +263 -0
- data/lib/bio/appl/sim4.rb +124 -0
- data/lib/bio/appl/sim4/report.rb +485 -0
- data/lib/bio/appl/sosui/report.rb +151 -0
- data/lib/bio/appl/spidey/report.rb +593 -0
- data/lib/bio/appl/targetp/report.rb +267 -0
- data/lib/bio/appl/tcoffee.rb +55 -0
- data/lib/bio/appl/tmhmm/report.rb +222 -0
- data/lib/bio/command.rb +337 -0
- data/lib/bio/data/aa.rb +349 -0
- data/lib/bio/data/codontable.rb +722 -0
- data/lib/bio/data/na.rb +223 -0
- data/lib/bio/db.rb +329 -0
- data/lib/bio/db/aaindex.rb +357 -0
- data/lib/bio/db/embl/common.rb +336 -0
- data/lib/bio/db/embl/embl.rb +402 -0
- data/lib/bio/db/embl/sptr.rb +1283 -0
- data/lib/bio/db/embl/swissprot.rb +42 -0
- data/lib/bio/db/embl/trembl.rb +41 -0
- data/lib/bio/db/embl/uniprot.rb +42 -0
- data/lib/bio/db/fantom.rb +599 -0
- data/lib/bio/db/fasta.rb +907 -0
- data/lib/bio/db/genbank/common.rb +290 -0
- data/lib/bio/db/genbank/ddbj.rb +22 -0
- data/lib/bio/db/genbank/genbank.rb +215 -0
- data/lib/bio/db/genbank/genpept.rb +60 -0
- data/lib/bio/db/genbank/refseq.rb +18 -0
- data/lib/bio/db/gff.rb +174 -0
- data/lib/bio/db/go.rb +481 -0
- data/lib/bio/db/kegg/brite.rb +41 -0
- data/lib/bio/db/kegg/compound.rb +131 -0
- data/lib/bio/db/kegg/drug.rb +98 -0
- data/lib/bio/db/kegg/enzyme.rb +148 -0
- data/lib/bio/db/kegg/expression.rb +155 -0
- data/lib/bio/db/kegg/genes.rb +263 -0
- data/lib/bio/db/kegg/genome.rb +241 -0
- data/lib/bio/db/kegg/glycan.rb +170 -0
- data/lib/bio/db/kegg/keggtab.rb +357 -0
- data/lib/bio/db/kegg/kgml.rb +256 -0
- data/lib/bio/db/kegg/orthology.rb +136 -0
- data/lib/bio/db/kegg/reaction.rb +82 -0
- data/lib/bio/db/kegg/taxonomy.rb +331 -0
- data/lib/bio/db/lasergene.rb +209 -0
- data/lib/bio/db/litdb.rb +107 -0
- data/lib/bio/db/medline.rb +323 -0
- data/lib/bio/db/nbrf.rb +191 -0
- data/lib/bio/db/newick.rb +658 -0
- data/lib/bio/db/nexus.rb +1854 -0
- data/lib/bio/db/pdb.rb +29 -0
- data/lib/bio/db/pdb/atom.rb +77 -0
- data/lib/bio/db/pdb/chain.rb +210 -0
- data/lib/bio/db/pdb/chemicalcomponent.rb +224 -0
- data/lib/bio/db/pdb/model.rb +148 -0
- data/lib/bio/db/pdb/pdb.rb +1911 -0
- data/lib/bio/db/pdb/residue.rb +176 -0
- data/lib/bio/db/pdb/utils.rb +399 -0
- data/lib/bio/db/prosite.rb +597 -0
- data/lib/bio/db/rebase.rb +457 -0
- data/lib/bio/db/soft.rb +404 -0
- data/lib/bio/db/transfac.rb +375 -0
- data/lib/bio/feature.rb +226 -0
- data/lib/bio/io/das.rb +461 -0
- data/lib/bio/io/dbget.rb +194 -0
- data/lib/bio/io/ddbjxml.rb +581 -0
- data/lib/bio/io/ebisoap.rb +158 -0
- data/lib/bio/io/ensembl.rb +229 -0
- data/lib/bio/io/fastacmd.rb +163 -0
- data/lib/bio/io/fetch.rb +181 -0
- data/lib/bio/io/flatfile.rb +1309 -0
- data/lib/bio/io/flatfile/bdb.rb +253 -0
- data/lib/bio/io/flatfile/index.rb +1371 -0
- data/lib/bio/io/flatfile/indexer.rb +787 -0
- data/lib/bio/io/higet.rb +73 -0
- data/lib/bio/io/hinv.rb +442 -0
- data/lib/bio/io/keggapi.rb +805 -0
- data/lib/bio/io/ncbirest.rb +256 -0
- data/lib/bio/io/ncbisoap.rb +155 -0
- data/lib/bio/io/pubmed.rb +307 -0
- data/lib/bio/io/registry.rb +292 -0
- data/lib/bio/io/soapwsdl.rb +119 -0
- data/lib/bio/io/sql.rb +365 -0
- data/lib/bio/location.rb +772 -0
- data/lib/bio/map.rb +410 -0
- data/lib/bio/pathway.rb +854 -0
- data/lib/bio/reference.rb +623 -0
- data/lib/bio/sequence.rb +475 -0
- data/lib/bio/sequence/aa.rb +125 -0
- data/lib/bio/sequence/common.rb +333 -0
- data/lib/bio/sequence/compat.rb +123 -0
- data/lib/bio/sequence/format.rb +181 -0
- data/lib/bio/sequence/generic.rb +24 -0
- data/lib/bio/sequence/na.rb +491 -0
- data/lib/bio/shell.rb +44 -0
- data/lib/bio/shell/core.rb +578 -0
- data/lib/bio/shell/demo.rb +146 -0
- data/lib/bio/shell/interface.rb +218 -0
- data/lib/bio/shell/irb.rb +95 -0
- data/lib/bio/shell/object.rb +71 -0
- data/lib/bio/shell/plugin/blast.rb +42 -0
- data/lib/bio/shell/plugin/codon.rb +218 -0
- data/lib/bio/shell/plugin/das.rb +58 -0
- data/lib/bio/shell/plugin/emboss.rb +23 -0
- data/lib/bio/shell/plugin/entry.rb +105 -0
- data/lib/bio/shell/plugin/flatfile.rb +101 -0
- data/lib/bio/shell/plugin/keggapi.rb +181 -0
- data/lib/bio/shell/plugin/midi.rb +430 -0
- data/lib/bio/shell/plugin/obda.rb +45 -0
- data/lib/bio/shell/plugin/psort.rb +56 -0
- data/lib/bio/shell/plugin/seq.rb +247 -0
- data/lib/bio/shell/plugin/soap.rb +87 -0
- data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/bioruby_generator.rb +29 -0
- data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/_classes.rhtml +4 -0
- data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/_log.rhtml +27 -0
- data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/_methods.rhtml +11 -0
- data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/_modules.rhtml +4 -0
- data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/_variables.rhtml +7 -0
- data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby-bg.gif +0 -0
- data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby-gem.png +0 -0
- data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby-link.gif +0 -0
- data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby.css +368 -0
- data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby.rhtml +47 -0
- data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby_controller.rb +144 -0
- data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby_helper.rb +47 -0
- data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/commands.rhtml +8 -0
- data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/history.rhtml +10 -0
- data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/index.rhtml +26 -0
- data/lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/spinner.gif +0 -0
- data/lib/bio/shell/script.rb +25 -0
- data/lib/bio/shell/setup.rb +109 -0
- data/lib/bio/shell/web.rb +102 -0
- data/lib/bio/tree.rb +850 -0
- data/lib/bio/util/color_scheme.rb +191 -0
- data/lib/bio/util/color_scheme/buried.rb +59 -0
- data/lib/bio/util/color_scheme/helix.rb +59 -0
- data/lib/bio/util/color_scheme/hydropathy.rb +64 -0
- data/lib/bio/util/color_scheme/nucleotide.rb +31 -0
- data/lib/bio/util/color_scheme/strand.rb +59 -0
- data/lib/bio/util/color_scheme/taylor.rb +50 -0
- data/lib/bio/util/color_scheme/turn.rb +59 -0
- data/lib/bio/util/color_scheme/zappo.rb +50 -0
- data/lib/bio/util/contingency_table.rb +370 -0
- data/lib/bio/util/restriction_enzyme.rb +228 -0
- data/lib/bio/util/restriction_enzyme/analysis.rb +249 -0
- data/lib/bio/util/restriction_enzyme/analysis_basic.rb +217 -0
- data/lib/bio/util/restriction_enzyme/cut_symbol.rb +107 -0
- data/lib/bio/util/restriction_enzyme/double_stranded.rb +321 -0
- data/lib/bio/util/restriction_enzyme/double_stranded/aligned_strands.rb +130 -0
- data/lib/bio/util/restriction_enzyme/double_stranded/cut_location_pair.rb +103 -0
- data/lib/bio/util/restriction_enzyme/double_stranded/cut_location_pair_in_enzyme_notation.rb +38 -0
- data/lib/bio/util/restriction_enzyme/double_stranded/cut_locations.rb +76 -0
- data/lib/bio/util/restriction_enzyme/double_stranded/cut_locations_in_enzyme_notation.rb +107 -0
- data/lib/bio/util/restriction_enzyme/enzymes.yaml +7061 -0
- data/lib/bio/util/restriction_enzyme/range/cut_range.rb +24 -0
- data/lib/bio/util/restriction_enzyme/range/cut_ranges.rb +47 -0
- data/lib/bio/util/restriction_enzyme/range/horizontal_cut_range.rb +67 -0
- data/lib/bio/util/restriction_enzyme/range/sequence_range.rb +257 -0
- data/lib/bio/util/restriction_enzyme/range/sequence_range/calculated_cuts.rb +242 -0
- data/lib/bio/util/restriction_enzyme/range/sequence_range/fragment.rb +51 -0
- data/lib/bio/util/restriction_enzyme/range/sequence_range/fragments.rb +41 -0
- data/lib/bio/util/restriction_enzyme/range/vertical_cut_range.rb +77 -0
- data/lib/bio/util/restriction_enzyme/single_strand.rb +199 -0
- data/lib/bio/util/restriction_enzyme/single_strand/cut_locations_in_enzyme_notation.rb +135 -0
- data/lib/bio/util/restriction_enzyme/single_strand_complement.rb +23 -0
- data/lib/bio/util/restriction_enzyme/string_formatting.rb +111 -0
- data/lib/bio/util/sirna.rb +288 -0
- data/sample/any2fasta.rb +59 -0
- data/sample/biofetch.rb +475 -0
- data/sample/color_scheme_na.rb +91 -0
- data/sample/dbget +37 -0
- data/sample/enzymes.rb +78 -0
- data/sample/fasta2tab.rb +99 -0
- data/sample/fastagrep.rb +72 -0
- data/sample/fastasort.rb +54 -0
- data/sample/fsplit.rb +51 -0
- data/sample/gb2fasta.rb +30 -0
- data/sample/gb2tab.rb +325 -0
- data/sample/gbtab2mysql.rb +161 -0
- data/sample/genes2nuc.rb +33 -0
- data/sample/genes2pep.rb +33 -0
- data/sample/genes2tab.rb +81 -0
- data/sample/genome2rb.rb +29 -0
- data/sample/genome2tab.rb +76 -0
- data/sample/goslim.rb +303 -0
- data/sample/gt2fasta.rb +47 -0
- data/sample/na2aa.rb +34 -0
- data/sample/pmfetch.rb +42 -0
- data/sample/pmsearch.rb +42 -0
- data/sample/psortplot_html.rb +214 -0
- data/sample/ssearch2tab.rb +96 -0
- data/sample/tdiary.rb +158 -0
- data/sample/tfastx2tab.rb +100 -0
- data/sample/vs-genes.rb +212 -0
- data/test/data/HMMER/hmmpfam.out +64 -0
- data/test/data/HMMER/hmmsearch.out +88 -0
- data/test/data/SOSUI/sample.report +11 -0
- data/test/data/TMHMM/sample.report +21 -0
- data/test/data/aaindex/DAYM780301 +30 -0
- data/test/data/aaindex/PRAM900102 +20 -0
- data/test/data/bl2seq/cd8a_cd8b_blastp.bl2seq +53 -0
- data/test/data/bl2seq/cd8a_p53_e-5blastp.bl2seq +37 -0
- data/test/data/blast/2.2.15.blastp.m7 +876 -0
- data/test/data/blast/b0002.faa +15 -0
- data/test/data/blast/b0002.faa.m0 +128 -0
- data/test/data/blast/b0002.faa.m7 +65 -0
- data/test/data/blast/b0002.faa.m8 +1 -0
- data/test/data/embl/AB090716.embl +65 -0
- data/test/data/embl/AB090716.embl.rel89 +63 -0
- data/test/data/fasta/example1.txt +75 -0
- data/test/data/fasta/example2.txt +21 -0
- data/test/data/genscan/sample.report +63 -0
- data/test/data/iprscan/merged.raw +32 -0
- data/test/data/iprscan/merged.txt +74 -0
- data/test/data/prosite/prosite.dat +2233 -0
- data/test/data/refseq/nm_126355.entret +64 -0
- data/test/data/soft/GDS100_partial.soft +92 -0
- data/test/data/soft/GSE3457_family_partial.soft +874 -0
- data/test/data/uniprot/p53_human.uniprot +1456 -0
- data/test/functional/bio/io/test_ensembl.rb +186 -0
- data/test/functional/bio/io/test_soapwsdl.rb +52 -0
- data/test/runner.rb +14 -0
- data/test/unit/bio/appl/bl2seq/test_report.rb +134 -0
- data/test/unit/bio/appl/blast/test_report.rb +417 -0
- data/test/unit/bio/appl/blast/test_xmlparser.rb +388 -0
- data/test/unit/bio/appl/genscan/test_report.rb +182 -0
- data/test/unit/bio/appl/hmmer/test_report.rb +342 -0
- data/test/unit/bio/appl/iprscan/test_report.rb +338 -0
- data/test/unit/bio/appl/mafft/test_report.rb +63 -0
- data/test/unit/bio/appl/sosui/test_report.rb +81 -0
- data/test/unit/bio/appl/targetp/test_report.rb +146 -0
- data/test/unit/bio/appl/test_blast.rb +163 -0
- data/test/unit/bio/appl/test_fasta.rb +130 -0
- data/test/unit/bio/appl/test_pts1.rb +140 -0
- data/test/unit/bio/appl/tmhmm/test_report.rb +126 -0
- data/test/unit/bio/data/test_aa.rb +90 -0
- data/test/unit/bio/data/test_codontable.rb +107 -0
- data/test/unit/bio/data/test_na.rb +80 -0
- data/test/unit/bio/db/embl/test_common.rb +117 -0
- data/test/unit/bio/db/embl/test_embl.rb +214 -0
- data/test/unit/bio/db/embl/test_embl_rel89.rb +219 -0
- data/test/unit/bio/db/embl/test_sptr.rb +1775 -0
- data/test/unit/bio/db/embl/test_uniprot.rb +31 -0
- data/test/unit/bio/db/kegg/test_genes.rb +45 -0
- data/test/unit/bio/db/pdb/test_pdb.rb +152 -0
- data/test/unit/bio/db/test_aaindex.rb +197 -0
- data/test/unit/bio/db/test_fasta.rb +250 -0
- data/test/unit/bio/db/test_gff.rb +127 -0
- data/test/unit/bio/db/test_lasergene.rb +95 -0
- data/test/unit/bio/db/test_newick.rb +293 -0
- data/test/unit/bio/db/test_nexus.rb +360 -0
- data/test/unit/bio/db/test_prosite.rb +1437 -0
- data/test/unit/bio/db/test_rebase.rb +101 -0
- data/test/unit/bio/db/test_soft.rb +138 -0
- data/test/unit/bio/io/test_ddbjxml.rb +75 -0
- data/test/unit/bio/io/test_ensembl.rb +109 -0
- data/test/unit/bio/io/test_fastacmd.rb +42 -0
- data/test/unit/bio/io/test_flatfile.rb +237 -0
- data/test/unit/bio/io/test_soapwsdl.rb +32 -0
- data/test/unit/bio/sequence/test_aa.rb +103 -0
- data/test/unit/bio/sequence/test_common.rb +174 -0
- data/test/unit/bio/sequence/test_compat.rb +69 -0
- data/test/unit/bio/sequence/test_na.rb +330 -0
- data/test/unit/bio/shell/plugin/test_seq.rb +185 -0
- data/test/unit/bio/test_alignment.rb +1025 -0
- data/test/unit/bio/test_command.rb +288 -0
- data/test/unit/bio/test_db.rb +96 -0
- data/test/unit/bio/test_feature.rb +116 -0
- data/test/unit/bio/test_location.rb +39 -0
- data/test/unit/bio/test_map.rb +230 -0
- data/test/unit/bio/test_pathway.rb +473 -0
- data/test/unit/bio/test_reference.rb +224 -0
- data/test/unit/bio/test_sequence.rb +329 -0
- data/test/unit/bio/test_shell.rb +18 -0
- data/test/unit/bio/test_tree.rb +593 -0
- data/test/unit/bio/util/restriction_enzyme/analysis/test_calculated_cuts.rb +299 -0
- data/test/unit/bio/util/restriction_enzyme/analysis/test_cut_ranges.rb +103 -0
- data/test/unit/bio/util/restriction_enzyme/analysis/test_sequence_range.rb +240 -0
- data/test/unit/bio/util/restriction_enzyme/double_stranded/test_aligned_strands.rb +101 -0
- data/test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_location_pair.rb +75 -0
- data/test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_location_pair_in_enzyme_notation.rb +73 -0
- data/test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_locations.rb +53 -0
- data/test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_locations_in_enzyme_notation.rb +104 -0
- data/test/unit/bio/util/restriction_enzyme/single_strand/test_cut_locations_in_enzyme_notation.rb +83 -0
- data/test/unit/bio/util/restriction_enzyme/test_analysis.rb +246 -0
- data/test/unit/bio/util/restriction_enzyme/test_cut_symbol.rb +44 -0
- data/test/unit/bio/util/restriction_enzyme/test_double_stranded.rb +115 -0
- data/test/unit/bio/util/restriction_enzyme/test_single_strand.rb +147 -0
- data/test/unit/bio/util/restriction_enzyme/test_single_strand_complement.rb +147 -0
- data/test/unit/bio/util/restriction_enzyme/test_string_formatting.rb +60 -0
- data/test/unit/bio/util/test_color_scheme.rb +33 -0
- data/test/unit/bio/util/test_contingency_table.rb +94 -0
- data/test/unit/bio/util/test_restriction_enzyme.rb +42 -0
- data/test/unit/bio/util/test_sirna.rb +245 -0
- metadata +479 -0
data/bin/bioruby
ADDED
|
@@ -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
|
+
|
data/bin/br_biofetch.rb
ADDED
|
@@ -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
|
+
|
data/bin/br_bioflat.rb
ADDED
|
@@ -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
|
+
|
data/bin/br_biogetseq.rb
ADDED
|
@@ -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
|
+
|
data/bin/br_pmfetch.rb
ADDED
|
@@ -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
|
+
|