Bio::DB::SoapEUtilities
FetchAdaptor
Toolbar
Summary
Bio::DB::SoapEUtilities::FetchAdaptor - Conversion of Entrez SOAP messages to BioPerl objects
Package variables
No package variables defined.
Included modules
Inherit
Bio::Root::Root
Synopsis
$fac = Bio::DB::SoapEUtilities->new();
$soap_result = $fac->efetch( -db => 'protein', -id => 2597988 );
$adp = Bio::DB::SoapEUtilities::FetchAdaptor(
-result => $soap_result,
-type => 'seq'
);
while ( $gb_seq = $adp->next_obj ) {
# do stuff
}
Description
FetchAdaptor is the base class of a system, modeled after
Bio::SeqIO, to parse SOAP responses from the NCBI Entrez efetch
utility into germane BioPerl objects.
The user will rarely need to instantiate a FetchAdaptor with
Bio::DB::SoapEUtilities::Result object as in the
/SYNOPSIS. It
usually suffices to use the -auto_adapt parameter in the factory
run() method:
my $fac = Bio::DB::SoapEUtilities->new();
my $taxio = $fac->efetch(-db => 'taxonomy', -id => 1394)->run(-auto_adapt=>1);
my $sp = $taxio->next_species; # Bio::Species objects
my $seqio = $fac->efetch(-db => 'protein', -id => 730439)->run(-auto_adapt=>1);
my $seq = $seqio->next_seq; # Bio::Seq::RichSeq objects
Methods
Methods description
Title : new Usage : my $obj = new Bio::DB::SoapEUtilities::FetchAdaptor(); Function: Builds a new Bio::DB::SoapEUtilities::FetchAdaptor object Returns : an instance of Bio::DB::SoapEUtilities::FetchAdaptor Args : named arguments -som => $soap_som_object (soap message) -type => $type ( optional, forces loading of $type adaptor ) |
Title : _initialize Usage : Function: Returns : Args : |
Title : _load_adaptor Usage : Function: loads a FetchAdaptor subclass Returns : Args : adaptor type (subclass name) |
Title : obj_class Usage : $adaptor->obj_class Function: Returns the fully qualified BioPerl classname of the objects returned by next_obj() Returns : scalar string (class name) Args : none |
Title : next_obj Usage : $obj = $adaptor->next_obj Function: Returns the next parsed BioPerl object from the adaptor Returns : object of class obj_class() Args : none |
Title : rewind Usage : Function: Rewind the adaptor's iterator Returns : Args : none |
Title : result Usage : Function: contains the SoapEUtilities::Result object Returns : Bio::DB::SoapEUtilities::Result object Args : none |
Title : type Usage : Function: contains the fetch type of this adaptor Returns : Args : |
Methods code
sub new
{ my ($class,@args) = @_;
$class = ref($class) || $class;
if ($class =~ /.*?::FetchAdaptor::(\S+)/) {
my $self = $class->SUPER::new(@args);
$self->_initialize(@args);
return $self;
}
else {
my %args = @args;
my $result = $args{'-result'} || $args{'-RESULT'};
$class->throw("Bio::DB::SoapEUtilities::Result argument required") unless $result;
$class->throw("RESULT argument must be a Bio::DB::SoapEUtilities::Result object") unless
ref($result) eq 'Bio::DB::SoapEUtilities::Result';
my $type ||= $result->fetch_type;
$class->throw("Can't determine fetch type for this result")
unless $type;
return unless( $class->_load_adaptor($type, $result) );
return "Bio::DB::SoapEUtilities::FetchAdaptor::$type"->new(@args);
}} |
sub _initialize
{ my $self = shift;
my @args = @_;
my ($result, $type) = $self->_rearrange([qw( RESULT TYPE )], @args);
$self->throw("Bio::DB::SoapEUtilities::Result argument required") unless $result;
$self->throw("RESULT argument must be a Bio::DB::SoapEUtilities::Result object") unless
ref($result) eq 'Bio::DB::SoapEUtilities::Result';
$self->{'_type'} = $type || $result->fetch_type;
$self->{'_result'} = $result;
1;} |
sub _load_adaptor
{ my ($class, $type, $result) = @_;
return unless $type;
for ($result->fetch_type) {
$_ eq 'seq' && do {
$_[1] = $type = 'species' if $result->fetch_db and
$result->fetch_db eq 'taxonomy';
last;
};
}
my $module = "Bio::DB::SoapEUtilities::FetchAdaptor::".$type;
my $ok;
eval {
$ok = $class->_load_module($module);
};
for ($@) {
/^$/ && do {
return $ok;
};
/Can't locate/ && do {
$class->throw("Fetch adaptor for '$type' not found");
};
do { $class->throw("Error in fetch adaptor for '$type' : $@");
};
}} |
sub obj_class
{ shift->throw_not_implemented } |
sub next_obj
{ shift->throw_not_implemented } |
sub rewind
{ shift->throw_not_implemented } |
sub result
{ shift->{'_result'}} |
sub type
{ shift->{'_type'}} |
General documentation
User feedback is an integral part of the evolution of this and other
Bioperl modules. Send your comments and suggestions preferably to
the Bioperl mailing list. Your participation is much appreciated.
bioperl-l@bioperl.org - General discussion
http://bioperl.org/wiki/Mailing_lists - About the mailing lists
Please direct usage questions or support issues to the mailing list:
bioperl-l@bioperl.orgrather than to the module maintainer directly. Many experienced and
reponsive experts will be able look at the problem and quickly
address it. Please include a thorough description of the problem
with code and data examples if at all possible.
| AUTHOR - Mark A. Jensen | Top |
Email maj -at- fortinbras -dot- us
The rest of the documentation details each of the object methods.
Internal methods are usually preceded with a _