bio-executables 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/BSDL +22 -0
- data/COPYING +56 -0
- data/COPYING.ja +51 -0
- data/Gemfile +6 -0
- data/LEGAL +8 -0
- data/README.md +63 -0
- data/Rakefile +20 -0
- data/bin/br_biofetch.rb +71 -0
- data/bin/br_bioflat.rb +293 -0
- data/bin/br_biogetseq.rb +45 -0
- data/bin/br_pmfetch.rb +422 -0
- data/bio-executables.gemspec +30 -0
- data/lib/bio-executables/version.rb +5 -0
- metadata +147 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 5589dde11154d41e1b5e57ae7a95881543b4c2f8
|
|
4
|
+
data.tar.gz: ec8e45140eda4d7a9cff61fdee7f25f4d7b59df6
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 548567973ee72e744c572498e3c063c9cdfebcc20325ecbbfb5cb024f1ebee12666fd39c58acd67fe74914c2878350a0da7af17cfb69b940122448591840ae2b
|
|
7
|
+
data.tar.gz: a01c3a332a2ee4a7d50234300a46307a740afe8bfd20b8ca19ed771e7f53fec323c15ac6ad091cf59a269500fc889aceca6a2479442e7a2adab82c142897a0db
|
data/.gitignore
ADDED
data/BSDL
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Copyright (C) 1993-2013 Yukihiro Matsumoto. All rights reserved.
|
|
2
|
+
|
|
3
|
+
Redistribution and use in source and binary forms, with or without
|
|
4
|
+
modification, are permitted provided that the following conditions
|
|
5
|
+
are met:
|
|
6
|
+
1. Redistributions of source code must retain the above copyright
|
|
7
|
+
notice, this list of conditions and the following disclaimer.
|
|
8
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
9
|
+
notice, this list of conditions and the following disclaimer in the
|
|
10
|
+
documentation and/or other materials provided with the distribution.
|
|
11
|
+
|
|
12
|
+
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
13
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
14
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
15
|
+
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
16
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
17
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
18
|
+
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
19
|
+
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
20
|
+
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
21
|
+
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
22
|
+
SUCH DAMAGE.
|
data/COPYING
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
BioRuby is copyrighted free software by Toshiaki Katayama <k@bioruby.org>.
|
|
2
|
+
You can redistribute it and/or modify it under either the terms of the
|
|
3
|
+
2-clause BSDL (see the file BSDL), or the conditions below:
|
|
4
|
+
|
|
5
|
+
1. You may make and give away verbatim copies of the source form of the
|
|
6
|
+
software without restriction, provided that you duplicate all of the
|
|
7
|
+
original copyright notices and associated disclaimers.
|
|
8
|
+
|
|
9
|
+
2. You may modify your copy of the software in any way, provided that
|
|
10
|
+
you do at least ONE of the following:
|
|
11
|
+
|
|
12
|
+
a) place your modifications in the Public Domain or otherwise
|
|
13
|
+
make them Freely Available, such as by posting said
|
|
14
|
+
modifications to Usenet or an equivalent medium, or by allowing
|
|
15
|
+
the author to include your modifications in the software.
|
|
16
|
+
|
|
17
|
+
b) use the modified software only within your corporation or
|
|
18
|
+
organization.
|
|
19
|
+
|
|
20
|
+
c) give non-standard binaries non-standard names, with
|
|
21
|
+
instructions on where to get the original software distribution.
|
|
22
|
+
|
|
23
|
+
d) make other distribution arrangements with the author.
|
|
24
|
+
|
|
25
|
+
3. You may distribute the software in object code or binary form,
|
|
26
|
+
provided that you do at least ONE of the following:
|
|
27
|
+
|
|
28
|
+
a) distribute the binaries and library files of the software,
|
|
29
|
+
together with instructions (in the manual page or equivalent)
|
|
30
|
+
on where to get the original distribution.
|
|
31
|
+
|
|
32
|
+
b) accompany the distribution with the machine-readable source of
|
|
33
|
+
the software.
|
|
34
|
+
|
|
35
|
+
c) give non-standard binaries non-standard names, with
|
|
36
|
+
instructions on where to get the original software distribution.
|
|
37
|
+
|
|
38
|
+
d) make other distribution arrangements with the author.
|
|
39
|
+
|
|
40
|
+
4. You may modify and include the part of the software into any other
|
|
41
|
+
software (possibly commercial). But some files in the distribution
|
|
42
|
+
are not written by the author, so that they are not under these terms.
|
|
43
|
+
|
|
44
|
+
For the list of those files and their copying conditions, see the
|
|
45
|
+
file LEGAL.
|
|
46
|
+
|
|
47
|
+
5. The scripts and library files supplied as input to or produced as
|
|
48
|
+
output from the software do not automatically fall under the
|
|
49
|
+
copyright of the software, but belong to whomever generated them,
|
|
50
|
+
and may be sold commercially, and may be aggregated with this
|
|
51
|
+
software.
|
|
52
|
+
|
|
53
|
+
6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
|
|
54
|
+
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
|
55
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
56
|
+
PURPOSE.
|
data/COPYING.ja
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
本プログラムはフリーソフトウェアです.2-clause BSDL
|
|
2
|
+
または以下に示す条件で本プログラムを再配布できます
|
|
3
|
+
2-clause BSDLについてはBSDLファイルを参照して下さい.
|
|
4
|
+
|
|
5
|
+
1. 複製は制限なく自由です.
|
|
6
|
+
|
|
7
|
+
2. 以下の条件のいずれかを満たす時に本プログラムのソースを
|
|
8
|
+
自由に変更できます.
|
|
9
|
+
|
|
10
|
+
(a) ネットニューズにポストしたり,作者に変更を送付する
|
|
11
|
+
などの方法で,変更を公開する.
|
|
12
|
+
|
|
13
|
+
(b) 変更した本プログラムを自分の所属する組織内部だけで
|
|
14
|
+
使う.
|
|
15
|
+
|
|
16
|
+
(c) 変更点を明示したうえ,ソフトウェアの名前を変更する.
|
|
17
|
+
そのソフトウェアを配布する時には変更前の本プログラ
|
|
18
|
+
ムも同時に配布する.または変更前の本プログラムのソー
|
|
19
|
+
スの入手法を明示する.
|
|
20
|
+
|
|
21
|
+
(d) その他の変更条件を作者と合意する.
|
|
22
|
+
|
|
23
|
+
3. 以下の条件のいずれかを満たす時に本プログラムをコンパイ
|
|
24
|
+
ルしたオブジェクトコードや実行形式でも配布できます.
|
|
25
|
+
|
|
26
|
+
(a) バイナリを受け取った人がソースを入手できるように,
|
|
27
|
+
ソースの入手法を明示する.
|
|
28
|
+
|
|
29
|
+
(b) 機械可読なソースコードを添付する.
|
|
30
|
+
|
|
31
|
+
(c) 変更を行ったバイナリは名前を変更したうえ,オリジナ
|
|
32
|
+
ルのソースコードの入手法を明示する.
|
|
33
|
+
|
|
34
|
+
(d) その他の配布条件を作者と合意する.
|
|
35
|
+
|
|
36
|
+
4. 他のプログラムへの引用はいかなる目的であれ自由です.た
|
|
37
|
+
だし,本プログラムに含まれる他の作者によるコードは,そ
|
|
38
|
+
れぞれの作者の意向による制限が加えられる場合があります.
|
|
39
|
+
|
|
40
|
+
それらファイルの一覧とそれぞれの配布条件などに付いては
|
|
41
|
+
LEGALファイルを参照してください.
|
|
42
|
+
|
|
43
|
+
5. 本プログラムへの入力となるスクリプトおよび,本プログラ
|
|
44
|
+
ムからの出力の権利は本プログラムの作者ではなく,それぞ
|
|
45
|
+
れの入出力を生成した人に属します.また,本プログラムに
|
|
46
|
+
組み込まれるための拡張ライブラリについても同様です.
|
|
47
|
+
|
|
48
|
+
6. 本プログラムは無保証です.作者は本プログラムをサポート
|
|
49
|
+
する意志はありますが,プログラム自身のバグあるいは本プ
|
|
50
|
+
ログラムの実行などから発生するいかなる損害に対しても責
|
|
51
|
+
任を持ちません.
|
data/Gemfile
ADDED
data/LEGAL
ADDED
data/README.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# BioRuby Executables
|
|
2
|
+
|
|
3
|
+
[](http://travis-ci.org/bioruby/bio-executables)
|
|
4
|
+
|
|
5
|
+
bio-executables is a collection of miscellaneous utilities for bioinformatics
|
|
6
|
+
that were formerly part of the [BioRuby](http://bioruby.org/) core ("bio" gem).
|
|
7
|
+
Because of reducing complexity, they were moved to this gem.
|
|
8
|
+
|
|
9
|
+
This code has historically been part of
|
|
10
|
+
[the BioRuby gem](https://github.com/bioruby/bioruby),
|
|
11
|
+
but has been split into its own gem as part of an effort to
|
|
12
|
+
[modularize](http://bioruby.open-bio.org/wiki/Plugins) BioRuby.
|
|
13
|
+
bio-executables and many more plugins are available at
|
|
14
|
+
[biogems.info](http://www.biogems.info/).
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## Requirements
|
|
18
|
+
|
|
19
|
+
bio-executables uses `bio` and `bio-old-biofetch-emulator` gems.
|
|
20
|
+
They will automatically be installed during the installation of
|
|
21
|
+
`bio-executables` in normal cases.
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
## Installation
|
|
25
|
+
|
|
26
|
+
Add this line to your application's Gemfile:
|
|
27
|
+
|
|
28
|
+
```ruby
|
|
29
|
+
gem 'bio-executables'
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
And then execute:
|
|
33
|
+
|
|
34
|
+
$ bundle
|
|
35
|
+
|
|
36
|
+
Or install it yourself as:
|
|
37
|
+
|
|
38
|
+
$ gem install bio-executables
|
|
39
|
+
|
|
40
|
+
## Usage
|
|
41
|
+
|
|
42
|
+
See BioRuby documentation at https://github.com/bioruby/documentation
|
|
43
|
+
|
|
44
|
+
## Development
|
|
45
|
+
|
|
46
|
+
To install this gem onto your local machine, run `bundle exec rake install`.
|
|
47
|
+
To release a new version, update the version number in `version.rb`,
|
|
48
|
+
and then run `bundle exec rake release`, which will create a git tag
|
|
49
|
+
for the version, push git commits and tags, and push the `.gem` file
|
|
50
|
+
to [rubygems.org](https://rubygems.org).
|
|
51
|
+
|
|
52
|
+
## Contributing
|
|
53
|
+
|
|
54
|
+
Bug reports and pull requests are welcome on GitHub at
|
|
55
|
+
https://github.com/bioruby/bioruby-executables
|
|
56
|
+
|
|
57
|
+
## Cite
|
|
58
|
+
|
|
59
|
+
If you use this software, please cite one of
|
|
60
|
+
|
|
61
|
+
* [BioRuby: bioinformatics software for the Ruby programming language](http://dx.doi.org/10.1093/bioinformatics/btq475)
|
|
62
|
+
* [Biogem: an effective tool-based approach for scaling up open source software development in bioinformatics](http://dx.doi.org/10.1093/bioinformatics/bts080)
|
|
63
|
+
|
data/Rakefile
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require "bundler/gem_tasks"
|
|
2
|
+
require 'rdoc/task'
|
|
3
|
+
require 'rake/testtask'
|
|
4
|
+
|
|
5
|
+
task :default => :test
|
|
6
|
+
|
|
7
|
+
Rake::TestTask.new do |t|
|
|
8
|
+
t.test_files = FileList["test/**/test_*.rb"]
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
Rake::RDocTask.new do |r|
|
|
12
|
+
r.rdoc_dir = "rdoc"
|
|
13
|
+
r.rdoc_files.include("README.md",
|
|
14
|
+
"COPYING", "COPYING.ja", "BSDL", "LEGAL",
|
|
15
|
+
"lib/**/*.rb")
|
|
16
|
+
r.main = "README.md"
|
|
17
|
+
r.options << '--title' << 'BioRuby Executables API documentation'
|
|
18
|
+
r.options << '--line-numbers'
|
|
19
|
+
end
|
|
20
|
+
|
data/bin/br_biofetch.rb
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
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
|
+
#
|
|
10
|
+
|
|
11
|
+
begin
|
|
12
|
+
require 'rubygems'
|
|
13
|
+
rescue LoadError
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
require 'bio/io/fetch'
|
|
17
|
+
|
|
18
|
+
def require_bio_old_biofetch_emulator(mandatory = true)
|
|
19
|
+
begin
|
|
20
|
+
require 'bio-old-biofetch-emulator'
|
|
21
|
+
rescue LoadError
|
|
22
|
+
if mandatory then
|
|
23
|
+
$stderr.puts "Error: please install bio-old-biofetch-emulator gem."
|
|
24
|
+
exit 1
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def default_url
|
|
30
|
+
'http://bioruby.org/cgi-bin/biofetch.rb'
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def another_url
|
|
34
|
+
'http://www.ebi.ac.uk/cgi-bin/dbfetch'
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def usage
|
|
38
|
+
puts "#{$0} [-s[erver] #{another_url}] db id [style] [format]"
|
|
39
|
+
puts " server : URL of the BioFetch CGI (default is #{default_url})"
|
|
40
|
+
puts " db : database name (embl, genbank, etc.)"
|
|
41
|
+
puts " id : entry id"
|
|
42
|
+
puts " style : 'raw' or 'html' (default is 'raw')"
|
|
43
|
+
puts " format : change the output format ('default', 'fasta', etc.)"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
if ARGV.empty? or ARGV[0] =~ /^--?h/
|
|
47
|
+
usage
|
|
48
|
+
exit 1
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
case ARGV[0]
|
|
52
|
+
when /^--?s/ # User specified server
|
|
53
|
+
require_bio_old_biofetch_emulator(false)
|
|
54
|
+
ARGV.shift
|
|
55
|
+
serv = Bio::Fetch.new(ARGV.shift)
|
|
56
|
+
puts serv.fetch(*ARGV)
|
|
57
|
+
when /^--?e/ # EBI server
|
|
58
|
+
ARGV.shift
|
|
59
|
+
serv = Bio::Fetch.new(another_url)
|
|
60
|
+
puts serv.fetch(*ARGV)
|
|
61
|
+
when /^--?r/ # BioRuby server
|
|
62
|
+
require_bio_old_biofetch_emulator
|
|
63
|
+
ARGV.shift
|
|
64
|
+
serv = Bio::Fetch.new(default_url)
|
|
65
|
+
puts serv.fetch(*ARGV)
|
|
66
|
+
else # Default server
|
|
67
|
+
require_bio_old_biofetch_emulator
|
|
68
|
+
puts Bio::Fetch.query(*ARGV)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
|
data/bin/br_bioflat.rb
ADDED
|
@@ -0,0 +1,293 @@
|
|
|
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
|
+
(default: /usr/bin/sort or BUILTIN)
|
|
45
|
+
--env=/path/to/env use env program to run sort (default: /usr/bin/env)
|
|
46
|
+
--env-arg=XXXXXX argument given to the env program (default: LC_ALL=C)
|
|
47
|
+
(multiple --env-arg=XXXXXX can be specified)
|
|
48
|
+
|
|
49
|
+
Options only valid for --update:
|
|
50
|
+
--renew re-read all flatfiles and update whole index
|
|
51
|
+
|
|
52
|
+
Backward compatibility:
|
|
53
|
+
--makeindex DIR/DBNAME
|
|
54
|
+
same as --create --type flat --location DIR --dbname DBNAME
|
|
55
|
+
--makeindexBDB DIR/DBNAME
|
|
56
|
+
same as --create --type bdb --location DIR --dbname DBNAME
|
|
57
|
+
--format=CLASS
|
|
58
|
+
instead of genbank|embl|fasta, specifing a class name is allowed
|
|
59
|
+
|
|
60
|
+
Show namespaces:
|
|
61
|
+
#{$0} --show-namespaces [--location DIR --dbname DBNAME] [DIR/DBNAME]
|
|
62
|
+
or
|
|
63
|
+
#{$0} --show-namespaces [--format=CLASS]
|
|
64
|
+
or
|
|
65
|
+
#{$0} --show-namespaces --files file
|
|
66
|
+
|
|
67
|
+
EOM
|
|
68
|
+
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def do_index(mode = :create)
|
|
73
|
+
case ARGV[0]
|
|
74
|
+
when /^\-\-?make/
|
|
75
|
+
dbpath = ARGV[1]
|
|
76
|
+
args = ARGV[2..-1]
|
|
77
|
+
is_bdb = nil
|
|
78
|
+
when /^\-\-?make.*bdb/i
|
|
79
|
+
dbname = ARGV[1]
|
|
80
|
+
args = ARGV[2..-1]
|
|
81
|
+
is_bdb = Bio::FlatFileIndex::MAGIC_BDB
|
|
82
|
+
when /^\-\-create/, /^\-\-update/
|
|
83
|
+
args = ARGV[1..-1]
|
|
84
|
+
else
|
|
85
|
+
usage
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
options = {}
|
|
89
|
+
|
|
90
|
+
while args.first =~ /^\-/
|
|
91
|
+
case x = args.shift
|
|
92
|
+
|
|
93
|
+
# OBDA stuff
|
|
94
|
+
|
|
95
|
+
when /^\-\-?format$/
|
|
96
|
+
args.shift
|
|
97
|
+
format = nil # throw this f*ckin' mess for auto detect :)
|
|
98
|
+
when /^\-\-?location/
|
|
99
|
+
location = args.shift.chomp('/')
|
|
100
|
+
when /^\-\-?dbname/
|
|
101
|
+
dbname = args.shift
|
|
102
|
+
when /^\-\-?(index)?type/
|
|
103
|
+
indextype = args.shift
|
|
104
|
+
case indextype
|
|
105
|
+
when /bdb/
|
|
106
|
+
is_bdb = Bio::FlatFileIndex::MAGIC_BDB
|
|
107
|
+
when /flat/
|
|
108
|
+
is_bdb = nil
|
|
109
|
+
else
|
|
110
|
+
usage
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
# BioRuby extension
|
|
114
|
+
|
|
115
|
+
when /^\-\-?files/i
|
|
116
|
+
break
|
|
117
|
+
|
|
118
|
+
when /^\-\-?format\=(.*)/i
|
|
119
|
+
format = $1
|
|
120
|
+
|
|
121
|
+
when /^\-\-?sort\=(.*)/i
|
|
122
|
+
options['sort_program'] = $1
|
|
123
|
+
options['onmemory'] = nil
|
|
124
|
+
when /^\-\-?no\-?te?mp/i
|
|
125
|
+
options['onmemory'] = true
|
|
126
|
+
|
|
127
|
+
when /^\-\-?env\=(.*)/i
|
|
128
|
+
options['env_program'] = $1
|
|
129
|
+
|
|
130
|
+
when /^\-\-?env-arg(?:ument)?\=(.*)/i
|
|
131
|
+
options['env_program_arguments'] ||= []
|
|
132
|
+
options['env_program_arguments'].push $1
|
|
133
|
+
|
|
134
|
+
when /^\-\-?primary.*\=(.*)/i
|
|
135
|
+
options['primary_namespace'] = $1
|
|
136
|
+
|
|
137
|
+
when /^\-\-?add-secondary.*\=(.*)/i
|
|
138
|
+
unless options['additional_secondary_namespaces'] then
|
|
139
|
+
options['additional_secondary_namespaces'] = []
|
|
140
|
+
end
|
|
141
|
+
options['additional_secondary_namespaces'] << $1 if $1.length > 0
|
|
142
|
+
|
|
143
|
+
when /^\-\-?secondary.*\=(.*)/i
|
|
144
|
+
unless options['secondary_namespaces'] then
|
|
145
|
+
options['secondary_namespaces'] = []
|
|
146
|
+
end
|
|
147
|
+
options['secondary_namespaces'] << $1 if $1.length > 0
|
|
148
|
+
|
|
149
|
+
when /^\-\-?renew/
|
|
150
|
+
options['renew'] = true
|
|
151
|
+
|
|
152
|
+
else
|
|
153
|
+
$stderr.print "Warning: ignoring invalid option #{x.inspect}\n"
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
dbpath = File.join(location, dbname) unless dbpath
|
|
158
|
+
if mode == :update then
|
|
159
|
+
Bio::FlatFileIndex::update_index(dbpath, format, options, *args)
|
|
160
|
+
else
|
|
161
|
+
Bio::FlatFileIndex::makeindex(is_bdb, dbpath, format, options, *args)
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
def do_search
|
|
167
|
+
dbname = nil
|
|
168
|
+
location = nil
|
|
169
|
+
names = []
|
|
170
|
+
while x = ARGV.shift
|
|
171
|
+
case x
|
|
172
|
+
when /\A\-\-?search/i
|
|
173
|
+
#do nothing
|
|
174
|
+
when /\A\-\-?location/i
|
|
175
|
+
location = ARGV.shift.to_s.chomp('/')
|
|
176
|
+
when /\A\-\-?dbname/i
|
|
177
|
+
dbname = ARGV.shift
|
|
178
|
+
when /\A\-\-?name(?:space)?(?:\=(.+))?/i
|
|
179
|
+
if $1 then
|
|
180
|
+
names << $1
|
|
181
|
+
elsif x = ARGV.shift
|
|
182
|
+
names << x
|
|
183
|
+
end
|
|
184
|
+
else
|
|
185
|
+
ARGV.unshift x
|
|
186
|
+
break
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
dbname = ARGV.shift unless dbname
|
|
190
|
+
dbname = File.join(location, dbname) unless location.to_s.empty?
|
|
191
|
+
db = Bio::FlatFileIndex.open(dbname)
|
|
192
|
+
ARGV.each do |key|
|
|
193
|
+
$stderr.print "Searching for \'#{key}\'...\n"
|
|
194
|
+
#r = db.search(key)
|
|
195
|
+
#$stderr.print "OK, #{r.size} entry found\n"
|
|
196
|
+
#if r.size > 0 then
|
|
197
|
+
# print r
|
|
198
|
+
#end
|
|
199
|
+
begin
|
|
200
|
+
if names.empty? then
|
|
201
|
+
r = db.include?(key)
|
|
202
|
+
else
|
|
203
|
+
r = db.include_in_namespaces?(key, *names)
|
|
204
|
+
end
|
|
205
|
+
rescue RuntimeError
|
|
206
|
+
$stderr.print "ERROR: #{$!}\n"
|
|
207
|
+
next
|
|
208
|
+
end
|
|
209
|
+
r = [] unless r
|
|
210
|
+
$stderr.print "OK, #{r.size} entry found\n"
|
|
211
|
+
r.each do |i|
|
|
212
|
+
print db.search_primary(i)
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
db.close
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
def do_show_namespaces
|
|
220
|
+
dbname = nil
|
|
221
|
+
location = nil
|
|
222
|
+
files = nil
|
|
223
|
+
format = nil
|
|
224
|
+
names = []
|
|
225
|
+
while x = ARGV.shift
|
|
226
|
+
case x
|
|
227
|
+
when /\A\-\-?(show\-)?name(space)?s/i
|
|
228
|
+
#do nothing
|
|
229
|
+
when /\A\-\-?location/i
|
|
230
|
+
location = ARGV.shift.to_s.chomp('/')
|
|
231
|
+
when /\A\-\-?dbname/i
|
|
232
|
+
dbname = ARGV.shift
|
|
233
|
+
when /\A\-\-?format(?:\=(.+))?/i
|
|
234
|
+
if $1 then
|
|
235
|
+
format = $1
|
|
236
|
+
elsif x = ARGV.shift
|
|
237
|
+
format = x
|
|
238
|
+
end
|
|
239
|
+
when /\A\-\-?files/i
|
|
240
|
+
files = ARGV
|
|
241
|
+
break
|
|
242
|
+
else
|
|
243
|
+
ARGV.unshift x
|
|
244
|
+
break
|
|
245
|
+
end
|
|
246
|
+
end
|
|
247
|
+
if files then
|
|
248
|
+
k = nil
|
|
249
|
+
files.each do |x|
|
|
250
|
+
k = Bio::FlatFile.autodetect_file(x)
|
|
251
|
+
break if k
|
|
252
|
+
end
|
|
253
|
+
if k then
|
|
254
|
+
$stderr.print "Format: #{k.to_s}\n"
|
|
255
|
+
format = k
|
|
256
|
+
else
|
|
257
|
+
$stderr.print "ERROR: couldn't determine file format\n"
|
|
258
|
+
return
|
|
259
|
+
end
|
|
260
|
+
end
|
|
261
|
+
$stderr.print "Namespaces: (first line: primary namespace)\n"
|
|
262
|
+
if format then
|
|
263
|
+
parser = Bio::FlatFileIndex::Indexer::Parser.new(format)
|
|
264
|
+
print parser.primary.name, "\n"
|
|
265
|
+
puts parser.secondary.keys
|
|
266
|
+
else
|
|
267
|
+
dbname = ARGV.shift unless dbname
|
|
268
|
+
dbname = File.join(location, dbname) unless location.to_s.empty?
|
|
269
|
+
db = Bio::FlatFileIndex.open(dbname)
|
|
270
|
+
puts db.namespaces
|
|
271
|
+
db.close
|
|
272
|
+
end
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
if ARGV.size > 1
|
|
276
|
+
case ARGV[0]
|
|
277
|
+
when /--make/, /--create/
|
|
278
|
+
Bio::FlatFileIndex::DEBUG.out = true
|
|
279
|
+
do_index
|
|
280
|
+
when /--update/
|
|
281
|
+
Bio::FlatFileIndex::DEBUG.out = true
|
|
282
|
+
do_index(:update)
|
|
283
|
+
when /\A\-\-?(show\-)?name(space)?s/i
|
|
284
|
+
do_show_namespaces
|
|
285
|
+
when /--search/
|
|
286
|
+
do_search
|
|
287
|
+
else #default is search
|
|
288
|
+
do_search
|
|
289
|
+
end
|
|
290
|
+
else
|
|
291
|
+
usage
|
|
292
|
+
end
|
|
293
|
+
|
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,422 @@
|
|
|
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:$
|
|
10
|
+
#
|
|
11
|
+
|
|
12
|
+
require 'bio'
|
|
13
|
+
|
|
14
|
+
PROG_VER = "Powered by BioRuby #{Bio::BIORUBY_VERSION_ID}"
|
|
15
|
+
PROG_NAME = File.basename($0)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
require 'getoptlong'
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### formatting
|
|
22
|
+
|
|
23
|
+
class String
|
|
24
|
+
def fill(fill_column = 80, prefix = '', separater = ' ')
|
|
25
|
+
prefix = ' ' * prefix if prefix.is_a?(Integer)
|
|
26
|
+
maxlen = fill_column - prefix.length
|
|
27
|
+
raise "prefix is longer than fill_column" if maxlen <= 0
|
|
28
|
+
|
|
29
|
+
cursor = pos = 0
|
|
30
|
+
lines = []
|
|
31
|
+
while cursor < self.length
|
|
32
|
+
line = self[cursor, maxlen]
|
|
33
|
+
pos = line.rindex(separater)
|
|
34
|
+
pos = nil if line.length < maxlen
|
|
35
|
+
if pos
|
|
36
|
+
len = pos + separater.length
|
|
37
|
+
lines << self[cursor, len]
|
|
38
|
+
cursor += len
|
|
39
|
+
else
|
|
40
|
+
lines << self[cursor, maxlen]
|
|
41
|
+
cursor += maxlen
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
return lines.join("\n#{prefix}")
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
module Bio
|
|
50
|
+
class Reference
|
|
51
|
+
def report
|
|
52
|
+
if (num = @authors.size) > 10
|
|
53
|
+
authors = "#{@authors[0]} et al. (#{num} authors)"
|
|
54
|
+
elsif num > 4
|
|
55
|
+
sep = ',' * (num - 1)
|
|
56
|
+
authors = "#{@authors[0]}#{sep} #{@authors[-1]}"
|
|
57
|
+
else
|
|
58
|
+
authors = authors_join(' & ')
|
|
59
|
+
end
|
|
60
|
+
journal = "#{@journal} #{@year} #{@volume}(#{@issue}):#{@pages}"
|
|
61
|
+
|
|
62
|
+
indent = 8
|
|
63
|
+
prefix = ' ' * indent
|
|
64
|
+
[
|
|
65
|
+
"#{@pages[/\d+/]}".ljust(indent) + "#{@title}".fill(78, indent),
|
|
66
|
+
authors,
|
|
67
|
+
"#{journal} [PMID:#{@pubmed}]",
|
|
68
|
+
].join("\n#{prefix}")
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class PMFetch
|
|
75
|
+
|
|
76
|
+
class Examples < StandardError; end
|
|
77
|
+
class Version < StandardError; end
|
|
78
|
+
class Usage < StandardError; end
|
|
79
|
+
|
|
80
|
+
### default options
|
|
81
|
+
|
|
82
|
+
def initialize
|
|
83
|
+
@format = 'rd'
|
|
84
|
+
@search_opts = {
|
|
85
|
+
'retmax' => 20,
|
|
86
|
+
}
|
|
87
|
+
@query = nil
|
|
88
|
+
@query_opts = []
|
|
89
|
+
@pmid_list_only = false
|
|
90
|
+
|
|
91
|
+
pmfetch
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
### main
|
|
96
|
+
|
|
97
|
+
def pmfetch
|
|
98
|
+
begin
|
|
99
|
+
set_options
|
|
100
|
+
parse_options
|
|
101
|
+
check_query
|
|
102
|
+
rescue PMFetch::Examples
|
|
103
|
+
puts examples
|
|
104
|
+
exit
|
|
105
|
+
rescue PMFetch::Version
|
|
106
|
+
puts version
|
|
107
|
+
exit
|
|
108
|
+
rescue PMFetch::Usage
|
|
109
|
+
puts usage
|
|
110
|
+
exit
|
|
111
|
+
rescue GetoptLong::MissingArgument, GetoptLong::InvalidOption
|
|
112
|
+
puts usage
|
|
113
|
+
exit
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
list = pm_esearch
|
|
117
|
+
|
|
118
|
+
if list.empty?
|
|
119
|
+
;
|
|
120
|
+
elsif @pmid_list_only
|
|
121
|
+
puts list
|
|
122
|
+
else
|
|
123
|
+
pm_efetch(list)
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
### help
|
|
129
|
+
|
|
130
|
+
def usage
|
|
131
|
+
%Q[
|
|
132
|
+
Usage: #{PROG_NAME} [options...] "query string"
|
|
133
|
+
or #{PROG_NAME} --query "query string" [other options...]
|
|
134
|
+
|
|
135
|
+
Options:
|
|
136
|
+
-q --query "genome AND virus" Query string for PubMed search
|
|
137
|
+
-t --title "mobile elements" Title of the article to search
|
|
138
|
+
-j --journal "genome res" Journal title to search
|
|
139
|
+
-v --volume # Journal volume to search
|
|
140
|
+
-i --issue # Journal issue to search
|
|
141
|
+
-p --page # First page number of the article to search
|
|
142
|
+
-a --author "Altschul SF" Author name to search
|
|
143
|
+
-m --mesh "SARS virus" MeSH term to search
|
|
144
|
+
-f --format bibtex Summary output format
|
|
145
|
+
--pmidlist Output only a list of PubMed IDs
|
|
146
|
+
-n --retmax # Number of articles to retrieve at the maximum
|
|
147
|
+
-N --retstart # Starting number of the articles to retrieve
|
|
148
|
+
-s --sort pub+date Sort method for the summary output
|
|
149
|
+
--reldate # Search articles published within recent # days
|
|
150
|
+
--mindate YYYY/MM/DD Search articles published after the date
|
|
151
|
+
--maxdate YYYY/MM/DD Search articles published before the date
|
|
152
|
+
--help Output this help, then exit
|
|
153
|
+
--examples Output examples, then exit
|
|
154
|
+
--version Output version number, then exit
|
|
155
|
+
|
|
156
|
+
Formats:
|
|
157
|
+
endnote, medline, bibitem, bibtex, report, rd,
|
|
158
|
+
nature, science, genome_res, genome_biol, nar, current, trends, cell
|
|
159
|
+
|
|
160
|
+
Sort:
|
|
161
|
+
author, journal, pub+date, page
|
|
162
|
+
|
|
163
|
+
See the following pages for the PubMed search options:
|
|
164
|
+
http://www.ncbi.nlm.nih.gov/entrez/query/static/help/pmhelp.html
|
|
165
|
+
http://www.ncbi.nlm.nih.gov/entrez/query/static/esearch_help.html
|
|
166
|
+
|
|
167
|
+
#{version}
|
|
168
|
+
|
|
169
|
+
]
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def version
|
|
173
|
+
PROG_VER
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
def examples
|
|
177
|
+
DATA.read.gsub('PMFetch', PROG_NAME)
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
private
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
### options
|
|
185
|
+
|
|
186
|
+
def set_options
|
|
187
|
+
@parser = GetoptLong.new
|
|
188
|
+
|
|
189
|
+
@parser.set_options(
|
|
190
|
+
[ '--query', '-q', GetoptLong::REQUIRED_ARGUMENT ],
|
|
191
|
+
[ '--title', '-t', GetoptLong::REQUIRED_ARGUMENT ],
|
|
192
|
+
[ '--journal', '-j', GetoptLong::REQUIRED_ARGUMENT ],
|
|
193
|
+
[ '--volume', '-v', GetoptLong::REQUIRED_ARGUMENT ],
|
|
194
|
+
[ '--issue', '-i', GetoptLong::REQUIRED_ARGUMENT ],
|
|
195
|
+
[ '--page', '-p', GetoptLong::REQUIRED_ARGUMENT ],
|
|
196
|
+
[ '--author', '-a', GetoptLong::REQUIRED_ARGUMENT ],
|
|
197
|
+
[ '--mesh', '-m', GetoptLong::REQUIRED_ARGUMENT ],
|
|
198
|
+
[ '--format', '-f', GetoptLong::REQUIRED_ARGUMENT ],
|
|
199
|
+
[ '--pmidlist', GetoptLong::NO_ARGUMENT ],
|
|
200
|
+
[ '--retmax', '-n', GetoptLong::REQUIRED_ARGUMENT ],
|
|
201
|
+
[ '--retstart', '-N', GetoptLong::REQUIRED_ARGUMENT ],
|
|
202
|
+
[ '--sort', '-s', GetoptLong::REQUIRED_ARGUMENT ],
|
|
203
|
+
[ '--reldate', GetoptLong::REQUIRED_ARGUMENT ],
|
|
204
|
+
[ '--mindate', GetoptLong::REQUIRED_ARGUMENT ],
|
|
205
|
+
[ '--maxdate', GetoptLong::REQUIRED_ARGUMENT ],
|
|
206
|
+
[ '--examples', GetoptLong::NO_ARGUMENT ],
|
|
207
|
+
[ '--help', GetoptLong::NO_ARGUMENT ],
|
|
208
|
+
[ '--version', GetoptLong::NO_ARGUMENT ]
|
|
209
|
+
)
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
def parse_options
|
|
213
|
+
@parser.each_option do |optname, optarg|
|
|
214
|
+
case optname
|
|
215
|
+
when /--query/
|
|
216
|
+
@query = optarg
|
|
217
|
+
when /--title/
|
|
218
|
+
@query_opts << "#{optarg}[ti]"
|
|
219
|
+
when /--journal/
|
|
220
|
+
@query_opts << "#{optarg}[ta]"
|
|
221
|
+
when /--volume/
|
|
222
|
+
@query_opts << "#{optarg}[vi]"
|
|
223
|
+
when /--issue/
|
|
224
|
+
@query_opts << "#{optarg}[ip]"
|
|
225
|
+
when /--page/
|
|
226
|
+
@query_opts << "#{optarg}[pg]"
|
|
227
|
+
when /--author/
|
|
228
|
+
@query_opts << "#{optarg}[au]"
|
|
229
|
+
when /--mesh/
|
|
230
|
+
@query_opts << "#{optarg}[mh]"
|
|
231
|
+
when /--format/
|
|
232
|
+
@format = optarg
|
|
233
|
+
when /--pmidlist/
|
|
234
|
+
@pmid_list_only = true
|
|
235
|
+
when /--examples/
|
|
236
|
+
raise PMFetch::Examples
|
|
237
|
+
when /--help/
|
|
238
|
+
raise PMFetch::Usage
|
|
239
|
+
when /--version/
|
|
240
|
+
raise PMFetch::Version
|
|
241
|
+
when /--sort/
|
|
242
|
+
@sort = optarg
|
|
243
|
+
@search_opts["sort"] = @sort unless @sort == "page"
|
|
244
|
+
else
|
|
245
|
+
optname.delete!('-')
|
|
246
|
+
@search_opts[optname] = optarg
|
|
247
|
+
end
|
|
248
|
+
end
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
### check query
|
|
253
|
+
|
|
254
|
+
def check_query
|
|
255
|
+
p @query if $DEBUG
|
|
256
|
+
@query ||= ARGV.join(" ") unless ARGV.empty?
|
|
257
|
+
|
|
258
|
+
p @query if $DEBUG
|
|
259
|
+
@query_str = [ @query, @query_opts ].flatten.compact.join(" AND ")
|
|
260
|
+
|
|
261
|
+
p @query_str if $DEBUG
|
|
262
|
+
if @query_str.empty?
|
|
263
|
+
raise PMFetch::Usage
|
|
264
|
+
end
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
### search
|
|
269
|
+
|
|
270
|
+
def pm_esearch
|
|
271
|
+
return Bio::PubMed.esearch(@query_str, @search_opts)
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
def pm_efetch(list)
|
|
275
|
+
entries = Bio::PubMed.efetch(list)
|
|
276
|
+
|
|
277
|
+
if @format == 'medline'
|
|
278
|
+
medline_format(entries)
|
|
279
|
+
else
|
|
280
|
+
entries = parse_entries(entries)
|
|
281
|
+
if @sort == 'page'
|
|
282
|
+
entries = sort_entries(entries)
|
|
283
|
+
end
|
|
284
|
+
if @format == 'report'
|
|
285
|
+
report_format(entries)
|
|
286
|
+
else
|
|
287
|
+
other_format(entries)
|
|
288
|
+
end
|
|
289
|
+
end
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
### output
|
|
294
|
+
|
|
295
|
+
def medline_format(entries)
|
|
296
|
+
entries.each do |entry|
|
|
297
|
+
puts entry
|
|
298
|
+
puts '//'
|
|
299
|
+
end
|
|
300
|
+
end
|
|
301
|
+
|
|
302
|
+
def parse_entries(entries)
|
|
303
|
+
entries.map { |entry| Bio::MEDLINE.new(entry) }
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
def sort_entries(entries)
|
|
307
|
+
if RUBY_VERSION > "1.8.0"
|
|
308
|
+
entries.sort_by { |x|
|
|
309
|
+
[ x.journal, x.volume.to_i, x.issue.to_i, x.pages.to_i ]
|
|
310
|
+
}
|
|
311
|
+
else
|
|
312
|
+
entries.map { |x|
|
|
313
|
+
[ x.journal, x.volume.to_i, x.issue.to_i, x.pages.to_i, x ]
|
|
314
|
+
}.sort { |a, b|
|
|
315
|
+
a[0..3] <=> b[0..3]
|
|
316
|
+
}.map { |y|
|
|
317
|
+
y.pop
|
|
318
|
+
}
|
|
319
|
+
end
|
|
320
|
+
end
|
|
321
|
+
|
|
322
|
+
def report_format(entries)
|
|
323
|
+
entries.each do |entry|
|
|
324
|
+
puts entry.reference.report
|
|
325
|
+
puts
|
|
326
|
+
end
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
def other_format(entries)
|
|
330
|
+
entries.each do |entry|
|
|
331
|
+
puts entry.reference.format(@format)
|
|
332
|
+
puts
|
|
333
|
+
end
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
end
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
PMFetch.new
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
__END__
|
|
343
|
+
|
|
344
|
+
= Examples : PubMed search
|
|
345
|
+
|
|
346
|
+
These four lines will do the same job.
|
|
347
|
+
|
|
348
|
+
% PMFetch transcription factor
|
|
349
|
+
% PMFetch "transcription factor"
|
|
350
|
+
% PMFetch --query "transcription factor"
|
|
351
|
+
% PMFetch -q "transcription factor"
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
Retrieve max 100 artiecles (20 is a NCBI's default) at a time, use --retmax as
|
|
355
|
+
|
|
356
|
+
% PMFetch -q "transcription factor" --retmax 100
|
|
357
|
+
|
|
358
|
+
and, to retrieve next 100 articles, use --retstart as
|
|
359
|
+
|
|
360
|
+
% PMFetch -q "transcription factor" --retmax 100 --retstart 100
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
You can narrow the search target for an issue of the journal.
|
|
364
|
+
|
|
365
|
+
% PMFetch --journal development --volume 131 --issue 3 transcription factor
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
Short options are also available.
|
|
369
|
+
|
|
370
|
+
% PMFetch -j development -v 131 -i 3 transcription factor
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
Search articles indexed in PubMed within these 90 days.
|
|
374
|
+
|
|
375
|
+
% PMFetch -q "transcription factor" --reldate 90
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
Search articles indexed in PubMed during the period of 2001/04/01 to 2001/08/31
|
|
379
|
+
|
|
380
|
+
% PMFetch -q "transcription factor" --mindate 2001/04/01 --maxdate 2001/08/31
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
Output format can be changed by --format option.
|
|
384
|
+
|
|
385
|
+
% PMFetch -q "transcription factor" -j development -v 131 -i 3 -f report
|
|
386
|
+
% PMFetch -q "transcription factor" -j development -v 131 -i 3 -f rd
|
|
387
|
+
% PMFetch -q "transcription factor" -j development -v 131 -i 3 -f endnote
|
|
388
|
+
% PMFetch -q "transcription factor" -j development -v 131 -i 3 -f medline
|
|
389
|
+
% PMFetch -q "transcription factor" -j development -v 131 -i 3 -f bibitem
|
|
390
|
+
% PMFetch -q "transcription factor" -j development -v 131 -i 3 -f bibtex
|
|
391
|
+
% PMFetch -q "transcription factor" -j development -v 131 -i 3 -f nature
|
|
392
|
+
% PMFetch -q "transcription factor" -j development -v 131 -i 3 -f science
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
Generate title listings for the journal report meeting (don't forget
|
|
396
|
+
to inclease the number of --retmax for fetching all titles).
|
|
397
|
+
|
|
398
|
+
% PMFetch -f report -j development -v 131 -i 3 -n 100
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
Search by author name.
|
|
402
|
+
|
|
403
|
+
% PMFetch -a "Karlin S"
|
|
404
|
+
% PMFetch -a "Koonin EV"
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
Search by MeSH term.
|
|
408
|
+
|
|
409
|
+
% PMFetch -m "computational biology"
|
|
410
|
+
% PMFetch -m "SARS virus"
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
Search by PubMed ID (PMID).
|
|
414
|
+
|
|
415
|
+
% PMFetch 12345
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
Output PMID only.
|
|
419
|
+
|
|
420
|
+
% PMFetch --pmidlist tardigrada
|
|
421
|
+
|
|
422
|
+
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require "bio-executables/version"
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = "bio-executables"
|
|
8
|
+
spec.version = Bio::Executables::VERSION
|
|
9
|
+
spec.authors = ["BioRuby project"]
|
|
10
|
+
spec.email = ["staff@bioruby.org"]
|
|
11
|
+
|
|
12
|
+
spec.summary = %q{BioRuby executables: utilities bundled with BioRuby}
|
|
13
|
+
spec.description = %q{BioRuby executables is a collection of miscellaneous utilities for bioinformatics that were formerly part of the BioRuby core ("bio" gem). Because of reducing complexity, they were moved to this gem.}
|
|
14
|
+
spec.homepage = "https://github.com/bioruby/bioruby-executables"
|
|
15
|
+
|
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
17
|
+
f.match(%r{^(test|spec|features)/})
|
|
18
|
+
end
|
|
19
|
+
spec.bindir = "bin"
|
|
20
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
21
|
+
spec.require_paths = ["lib"]
|
|
22
|
+
|
|
23
|
+
spec.add_runtime_dependency "bio", ">= 1.5.1"
|
|
24
|
+
spec.add_runtime_dependency "bio-old-biofetch-emulator", ">= 0.0.1"
|
|
25
|
+
|
|
26
|
+
spec.add_development_dependency "bundler", "~> 1.15"
|
|
27
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
|
28
|
+
spec.add_development_dependency "rdoc", "~> 5"
|
|
29
|
+
spec.add_development_dependency "test-unit", "~> 3"
|
|
30
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: bio-executables
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- BioRuby project
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2017-09-15 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: bio
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: 1.5.1
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: 1.5.1
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: bio-old-biofetch-emulator
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: 0.0.1
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: 0.0.1
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: bundler
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '1.15'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '1.15'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: rake
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '10.0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '10.0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: rdoc
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '5'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '5'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: test-unit
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - "~>"
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '3'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - "~>"
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '3'
|
|
97
|
+
description: BioRuby executables is a collection of miscellaneous utilities for bioinformatics
|
|
98
|
+
that were formerly part of the BioRuby core ("bio" gem). Because of reducing complexity,
|
|
99
|
+
they were moved to this gem.
|
|
100
|
+
email:
|
|
101
|
+
- staff@bioruby.org
|
|
102
|
+
executables:
|
|
103
|
+
- br_biofetch.rb
|
|
104
|
+
- br_bioflat.rb
|
|
105
|
+
- br_biogetseq.rb
|
|
106
|
+
- br_pmfetch.rb
|
|
107
|
+
extensions: []
|
|
108
|
+
extra_rdoc_files: []
|
|
109
|
+
files:
|
|
110
|
+
- ".gitignore"
|
|
111
|
+
- BSDL
|
|
112
|
+
- COPYING
|
|
113
|
+
- COPYING.ja
|
|
114
|
+
- Gemfile
|
|
115
|
+
- LEGAL
|
|
116
|
+
- README.md
|
|
117
|
+
- Rakefile
|
|
118
|
+
- bin/br_biofetch.rb
|
|
119
|
+
- bin/br_bioflat.rb
|
|
120
|
+
- bin/br_biogetseq.rb
|
|
121
|
+
- bin/br_pmfetch.rb
|
|
122
|
+
- bio-executables.gemspec
|
|
123
|
+
- lib/bio-executables/version.rb
|
|
124
|
+
homepage: https://github.com/bioruby/bioruby-executables
|
|
125
|
+
licenses: []
|
|
126
|
+
metadata: {}
|
|
127
|
+
post_install_message:
|
|
128
|
+
rdoc_options: []
|
|
129
|
+
require_paths:
|
|
130
|
+
- lib
|
|
131
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
132
|
+
requirements:
|
|
133
|
+
- - ">="
|
|
134
|
+
- !ruby/object:Gem::Version
|
|
135
|
+
version: '0'
|
|
136
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
137
|
+
requirements:
|
|
138
|
+
- - ">="
|
|
139
|
+
- !ruby/object:Gem::Version
|
|
140
|
+
version: '0'
|
|
141
|
+
requirements: []
|
|
142
|
+
rubyforge_project:
|
|
143
|
+
rubygems_version: 2.6.11
|
|
144
|
+
signing_key:
|
|
145
|
+
specification_version: 4
|
|
146
|
+
summary: 'BioRuby executables: utilities bundled with BioRuby'
|
|
147
|
+
test_files: []
|