[Bioperl-l] proposed query interface to Web-based sequence entry databases

Lincoln Stein lstein@cshl.org
Mon, 18 Nov 2002 23:03:58 GMT


Hi,

I'm doing the search interface to Entrez's eutils now.  This facility
will allow people to create a query using Entrez query language and
either get the count of entries returned, get the list of returned IDs
(not accessions, unfortunately), or get the entries themselves.

How does this API look?  I'm trying to keep it very basic.

Lincoln

PS: implementing this will require some surgery to WebDBSeqI, but I
promise not to break anything.

# $Id$
#
# BioPerl module for Bio::DB::QueryI.pm
#
# Cared for by Lincoln Stein <lstein@cshl.org>
#
# Copyright Lincoln Stein
#
# You may distribute this module under the same terms as perl itself
#
# POD documentation - main docs before the code
#

=head1 NAME

Bio::DB::QueryI - Object Interface to queryable sequence databases

=head1 SYNOPSIS

   # using Bio::DB::Query::GenBank as an example
   my $query_string = 'Oryza[Organism] and EST[Keyword]';
   my $query = Bio::DB::Query::GenBank->new(-db=>'nucleotide',
                                            -query=>$query_string);
   my $count = $query->count;
   my @ids   = $query->get_Ids;

   # get a genbank database handle
   $gb = new Bio::DB::GenBank;
   my $stream = $db->get_Stream_by_query($query);
   while (my $seq = $stream->next_seq) {
      ...
   }

   # initialize the list yourself
   my $query = Bio::DB::Query::GenBank->new(-ids=>['X1012','CA12345']);

=head1 DESCRIPTION

This interface provides facilities for managing sequence queries such
as those offered by Entrez.  A query object is created by calling
new() with a database-specific argument list. From the query object
you can either obtain the list of IDs returned by the query, or a
count of entries that would be returned.  You can pass the query
object to a Bio::DB::RandomAccessI object to return the entries
themselves as a list or a stream.

=head1 FEEDBACK

=head2 Mailing Lists

User feedback is an integral part of the
evolution of this and other Bioperl modules. Send
your comments and suggestions preferably to one
of the Bioperl mailing lists. Your participation
is much appreciated.

  bioperl-l@bioperl.org              - General discussion
  http://bioperl.org/MailList.shtml  - About the mailing lists

=head2 Reporting Bugs

Report bugs to the Bioperl bug tracking system to
help us keep track the bugs and their resolution.
Bug reports can be submitted via email or the
web:

  bioperl-bugs@bio.perl.org
  http://bugzilla.bioperl.org/

=head1 AUTHOR - Lincoln Stein

Email lstein@cshl.org

=head1 APPENDIX

The rest of the documentation details each of the
object methods. Internal methods are usually
preceded with a _

=cut

# Let the code begin...

package Bio::DB::QueryI;
use strict;
use vars qw(@ISA $VERSION);

@ISA = (Bio::Root::RootI);
$VERSION = '0.1';

sub new {
  my ($class, @args) = @_;
  my $self = $class->SUPER::new(@args);
}

sub count   { }
sub ids { }
sub query { }

1;


-- 
========================================================================
Lincoln D. Stein                           Cold Spring Harbor Laboratory
lstein@cshl.org			                  Cold Spring Harbor, NY
Positions available at my lab: see http://stein.cshl.org/#hire
========================================================================