Bio::H...erBaseI(3pm)
β¨ NAME β¨
Bio::HandlerBaseI β the interface class for handler methods that vibe with any event-driven parsers (aka drivers). π
(The page header calls it Bio::H...erBaseI(3pm) bc the terminal was feeling β¨mysteriousβ¨, but bestie, it's Bio::HandlerBaseI.)
πΈ SYNOPSIS πΈ
# MyHandler is a Bio::HandlerBaseI-derived class for dealing with GenBank
# sequence data, derived from a GenBank event-driven parser
# inside a parser (driver) constructor
$self->seqhandler($handler || MyHandler->new(-format => 'genbank'));
# in the driver parsing method ( such as next_seq() ) ...
$handler = $self->seqhandler();
# roll data up into hashref chunks, pass off into Handler for processing...
$hobj->data_handler($data);
# or retrieve Handler methods and pass data directly to Handler methods
my $hmeth = $hobj->handler_methods;
if ($hmeth->{ $data->{NAME} }) {
my $mth = $hmeth->{ $data->{NAME} }; # code ref
$hobj->$mth($data);
}
π¦ DESCRIPTION π¦
Okay so this interface describes the simple class methods you use to process data coming out of an event-based parser (a driver). Thematically it's giving XML SAX-based driver energy, except here's the glow-up: you can optionally pass related data semi-intelligently as chunks (defined inside a hash reference) instead of dribbling out single data elements one at a time in a stream. Like, any reference-related and species-related data, plus individual sequence features, can all be passed as chunks of data to be processed in part or as a whole (this next bit is straight from Data::Dumper output):
Annotation Data (References):
$VAR1 = {
'NAME' => 'REFERENCE',
'DATA' => '1 (bases 1 to 10001)'
'AUTHORS' => 'International Human Genome Sequencing Consortium.'
'TITLE' => 'The DNA sequence of Homo sapiens'
'JOURNAL' => 'Unpublished (2003)'
};
Sequence features (source seqfeature):
$VAR1 = {
'mol_type' => 'genomic DNA',
'LOCATION' => '<1..>10001',
'NAME' => 'FEATURES',
'FEATURE_KEY' => 'source',
'note' => 'Accession AL451081 sequenced by The Sanger Centre',
'db_xref' => 'taxon:9606',
'clone' => 'RP11-302I18',
'organism' => 'Homo sapiens'
};
These get 'handled' accordingly by methods specified in a HandlerI-based class. And like, the data inside a chunk is intentionally left vague here, because it totally varies from implementation to implementation and is kinda open to interpretation. A data chunk in a sequence record is simply not gonna look like a data chunk in a BLAST report β different vibes entirely. This also gives you the flexibility to pass data as more XML-like small bits, as huge chunks, or even as indexed locations in a file (like when you're using a "pull" parser, such as a Bio::PullParserI). π«Ά
For a sequence-based implementation, go look at Bio::SeqIO::RichSeq::GenericRichSeqHandler, which handles any GenBank, UniProt, and EMBL data from their respective driver modules (Bio::SeqIO::gbdriver, Bio::SeqIO::swissdriver, and Bio::SeqIO::embldriver). She does it all, no cap. π
π FEEDBACK π
π 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/wiki/Mailing_lists - About the mailing lists
π Support
Please direct usage questions or support issues to the mailing list:
bioperl-l@bioperl.org
rather than to the module maintainer directly. So many experienced and responsive 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. (The more receipts the better, bestie. π)
π 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 the web:
https://github.com/bioperl/bioperl-live/issues
π AUTHOR - Chris Fields
Email cjfields at bioperl dot org
π APPENDIX π
The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _ (iykyk, those are the behind-the-scenes ones).
π data_handler
- Title:
data_handler - Usage:
$handler->data_handler($data) - Function: Centralized method which accepts all data chunks, then distributes to the appropriate methods for processing based on the chunk name from within the HandlerBaseI object.
One can also use
- Returns: None
- Args: an hash ref containing a data chunk.
π§ handler_methods
- Title:
handler_methods - Usage:
$handler->handler_methods('GenBank')
%handlers = $handler->handler_methods();
- Function: Retrieve the handler methods used for the current
format()in the handler. This assumes the handler methods are already described in the HandlerI-implementing class. - Returns: a hash reference with the data type handled and the code ref associated with it.
- Args: [optional] String representing the sequence format. If set here this will also set
sequence_format() - Throws: On unimplemented sequence format in
%HANDLERS
π format
- Title:
format - Usage:
$handler->format('GenBank')
$handler->format('BLAST')
- Function: Get/Set the format for the report/record being parsed. This can be used to set handlers in classes which are capable of processing similar data chunks from multiple driver modules.
- Returns: String with the sequence format
- Args: [optional] String with the sequence format
- Note: The format may be used to set the handlers (as in the current
GenericRichSeqHandlerimplementation)
β get_params
- Title:
get_params - Usage:
$handler->get_params('-species') - Function: Convenience method used to retrieve the specified parameters from the internal parameter cache
- Returns: Hash ref containing parameters requested and data as key-value pairs. Note that some parameter values may be objects, arrays, etc.
- Args: List (array) representing the parameters requested
πΈ set_params
- Title:
set_params - Usage:
$handler->set_params({
'-species' => $species,
'-accession_number' => $acc
});
- Function: Convenience method used to set specific parameters
- Returns: None
- Args: Hash ref containing the data to be passed as key-value pairs
π¦ reset_parameters
- Title:
reset_parameters - Usage:
$handler->reset_parameters() - Function: Resets the internal cache of data (normally object parameters for a builder or factory)
- Returns: None
- Args: None
and that's the whole page, bestie π this gorgeousness is User Contributed Perl Documentation for perl v5.32.1, dated 2021-08-15 β iconic, historic, we stan. mwah π
β¨π
π¦ where this page comes from
- debian bookworm: libbio-perl-perl 1.7.8-1 Β· Perl
- debian trixie: libbio-perl-perl 1.7.8-1 Β· Perl
- ubuntu jammy: libbio-perl-perl 1.7.8-1 Β· Perl
- ubuntu noble: libbio-perl-perl 1.7.8-1 Β· Perl
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms