annotate variant_effect_predictor/Bio/Biblio.pm @ 3:d30fa12e4cc5 default tip

Merge heads 2:a5976b2dce6f and 1:09613ce8151e which were created as a result of a recently fixed bug.
author devteam <devteam@galaxyproject.org>
date Mon, 13 Jan 2014 10:38:30 -0500
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: Biblio.pm,v 1.7 2002/10/22 07:45:09 lapp Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module Bio::Biblio
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Martin Senger <senger@ebi.ac.uk>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 # For copyright and disclaimer see below.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 Bio::Biblio - A Bibliographic Query Service module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 use Bio::Biblio;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 my $biblio = new Bio::Biblio;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 print $biblio->find ('perl')->get_count . "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 my $collection = $biblio->find ('brazma', 'authors');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 while ( $collection->has_next ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 print $collection->get_next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 Here are some one-liners:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 perl -MBio::Biblio -e 'print new Bio::Biblio->get_by_id ("94033980")'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 perl -MBio::Biblio \
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 -e 'print join ("\n", @{ new Bio::Biblio->find ("brazma")->get_all_ids })'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 perl -MBio::Biblio \
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 -e 'print new Bio::Biblio->find ("Java")->find ("perl")->get_count'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 The C<new> method can get parameters, for example:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 my $biblio = Bio::Biblio
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 (-access => 'soap',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 -location => 'http://industry.ebi.ac.uk/soap/openBQS',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 -destroy_on_exit => '0');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 This is a class whose instances can access bibliographic
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 repositories. It allows to query a bibliographic database (such as
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 MEDLINE) and then to retrieve resulting citations from it. The
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 citations are returned in an XML format which is native to the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 repository but there are also supporting modules for converting them
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 into Perl objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 The detailed descriptions of all query and retrieval methods are in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 L<Bio::DB::BiblioI> (an interface). All those methods should be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 called on instances of this (Bio::Biblio) module.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 The module complies (with some simplifications) with the specification
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 described in the B<OpenBQS> project. Its home page is at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 I<http://industry.ebi.ac.uk/openBQS>. There are also links to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 available servers providing access to the bibliographic repositories
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 (namely to I<MEDLINE>).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 The module also gives an access to a set of controlled vocabularies
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 and their values. It allows to introspect bibliographic repositories
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 and to find what citation resource types (such as journal and book
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 articles, patents or technical reports) are provided, and what
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 attributes they have, eventually what attribute values are allowed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 =head1 OVERVIEW OF CLASSES AND PACKAGES
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 =over
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 =item B<Bio::Biblio>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 This is the main class to be used by the end users. It
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 loads a real implementation for a particular access protocol according
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 to the argument I<-access>. At the time of writing this documentation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 there is only one available access module implementing all query and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 retrieval methods:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 -access => soap
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 This module implements all methods defined in the interface
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 I<Bio::DB::BiblioI> (see L<Bio::DB::BiblioI>) by delegating
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 calls to a loaded low-level module (e.g. see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 L<Bio::DB::Biblio::soap>).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 Note that there is also another module (and perhaps more) which does
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 not use SOAP protocol and do not implement all query methods -
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 nevertheless it has retrieval methods and it can be used in the same
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 way:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 -access => biofetch
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 =item Bio::DB::BiblioI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 This is an interface defining all methods that can be called on
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 I<Bio::Biblio> instances.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 =item Bio::DB::Biblio::soap
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 This is a real implementation of all methods defined in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 Bio::DB::BiblioI using SOAP protocol (calling a WebService
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 based on SOAP). This class should not be instantiated directly (use
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 I<Bio::Biblio> instead). See L<Bio::DB::BiblioI> for details.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 =item Bio::Biblio::IO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 This module instantiates and uses a converter of the citations read by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 any of the access methods mentioned above. See L<Bio::Biblio::IO> for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 details.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 =item Bio::Biblio::IO::medlinexml and Bio::Biblio::IO::medline2ref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 A converter of MEDLINE citations in XML into Perl objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 =item Bio::Biblio::IO::pubmedxml and Bio::Biblio::IO::pubmed2ref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 A converter of PUBMED citations in XML into Perl objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 =back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 Bioperl modules. Send your comments and suggestions preferably to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 the Bioperl mailing list. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 http://bioperl.org/MailList.shtml - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 of the bugs and their resolution. Bug reports can be submitted via
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 email or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 bioperl-bugs@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 =head1 AUTHOR
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 Martin Senger (senger@ebi.ac.uk)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 =head1 COPYRIGHT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 Copyright (c) 2002 European Bioinformatics Institute. All Rights Reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 This module is free software; you can redistribute it and/or modify
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 it under the same terms as Perl itself.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 =head1 DISCLAIMER
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 This software is provided "as is" without warranty of any kind.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 =head1 SEE ALSO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 =over
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 =item *
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 OpenBQS home page: http://industry.ebi.ac.uk/openBQS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 =item *
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 Comments to the Perl client: http://industry.ebi.ac.uk/openBQS/Client_perl.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 =back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 The main documentation details are to be found in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 L<Bio::DB::BiblioI>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 Here is the rest of the object methods. Internal methods are preceded
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 with an underscore _.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 package Bio::Biblio;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 use vars qw(@ISA $VERSION $Revision);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 use Bio::DB::BiblioI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 @ISA = qw(Bio::Root::Root Bio::DB::BiblioI);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 BEGIN {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 $VERSION = do { my @r = (q$Revision: 1.7 $ =~ /\d+/g); sprintf "%d.%-02d", @r };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 $Revision = q$Id: Biblio.pm,v 1.7 2002/10/22 07:45:09 lapp Exp $;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 # -----------------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 Usage : my $obj = new Bio::Biblio (@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 Returns : Bio::Biblio object on success, or undef on failure
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 Args : This module recognizes and uses:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 -access => 'soap'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 It indicates what lower-level module to load.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 Default is 'soap'.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 -location => 'http://...'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 It says where to find a bibliographic query service.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 The format and contents of this argument is dependent
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 on the '-access' argument.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 For 'soap' access it is a URL of a WebService.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 Default is http://industry.ebi.ac.uk/soap/openBQS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 Other arguments can be given here but they are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 recognized by the lower-level module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 (e.g. see Bio::DB::Biblio::soap).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 It builds, populates and returns a new I<Bio::Biblio> object. This is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 how it is seen from the outside. But in fact, it builds, populates and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 returns a more specific lower-level object, for example
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 I<Bio::DB::Biblio::soap> object - which one it is depends on the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 parameter I<-access>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 The real initialization is done in the method I<_initialize> of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 lower-level object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 This method can also be used for I<cloning> an existing object and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 changing or adding new attributes to it in the same time. This is,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 however, not particulary useful for the casual users of this module,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 because the query methods (see L<Bio::DB::BiblioI>) themselves
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 already return cloned objects with more refined query
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 collections. Anyway this is how the cloning can be done:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 use Bio::Biblio;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 my $biblio = new Bio::Biblio;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 # this will create a new object which will NOT send a 'destroy'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 # message to the remote server when its life ends
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 my $clone = $biblio->new (-destroy-on-exit => '0');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 my ($caller,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 my $class = ref($caller) || $caller;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 # if $caller is an object, or if it is an underlying
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 # 'real-work-doing' class (e.g. Bio::DB::Biblio::soap) then
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 # we want to call SUPER to create and bless an object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 if ($class =~ /Bio::DB::Biblio::(\S+)/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 my ($self) = $class->SUPER::new (@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 # now the $self is an empty object - we will populate it from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 # the $caller - if $caller is an object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 if (ref ($caller)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 %{ $self } = %{ $caller };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 # and finally add values from '@args' into the newly created
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 # object (the values will overwrite the values copied above)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 $self->_initialize (@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 # this is called only the first time when somebody calls: 'new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 # Bio::Biblio (...)', and it actually loads a 'real-work-doing'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 # module and call this new() method again (unless the loaded
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 # module has its own new() method)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 my %param = @args;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 @param { map { lc $_ } keys %param } = values %param; # lowercase keys
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 my $access =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 $param {'-access'} ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 $class->_guess_access ( $param {'-location'} ) ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 'soap';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 $access = "\L$access"; # normalize capitalization to lower case
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 # load module with the real implementation - as defined in $access
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 return undef unless (&_load_access_module ($access));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 # this will call this same method new() - but rather its the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 # upper (object) branche
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 return "Bio::DB::Biblio::$access"->new (@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 # -----------------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 =head2 _load_access_module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 Usage : $class->_load_access_module ($access)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 Returns : 1 on success, undef on failure
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 Args : 'access' should contain the last part of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 name of a module who does the real implementation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 It does (in run-time) a similar thing as
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 require Bio::DB::Biblio::$access
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 It prints an error on STDERR if it fails to find and load the module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 (for example, because of the compilation errors in the module).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 sub _load_access_module {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 my ($access) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 my ($module, $load, $m);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 $module = "_<Bio/DB/Biblio/$access.pm";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 $load = "Bio/DB/Biblio/$access.pm";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 return 1 if $main::{$module};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 eval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 require $load;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 if ( $@ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 Bio::Root::Root->throw (<<END);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 $load: $access cannot be found or loaded
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 Exception $@
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 For more information about the Biblio system please see the Bio::Biblio docs.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 END
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 # -----------------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 =head2 _guess_access
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 Usage : $class->_guess_access ($location)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 Returns : string with a guessed access protocol (e.g. 'soap')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 Args : 'location' defines where to find a bibliographic service
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 in a protocol-dependent manner (e.g. for SOAP it is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 a URL of a bibliographic WebService)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 It makes an expert guess what kind of access/transport protocol should
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 be used based on the I<location> of the service (e.g. if the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 I<location> looks like an IOR then the access protocol is probably
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 CORBA).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 # this is kept here for the future when more access protocols
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 # (e.g. CORBA) may be available for accessing bibliographic query
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 # services
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 sub _guess_access {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 # my ($class, $location) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 return 'soap';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 =head2 VERSION and Revision
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 Usage : print $Bio::Biblio::VERSION;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 print $Bio::Biblio::Revision;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 __END__