Bio::S...eWriter(3pm)

πŸ“¦
version 1.7.8 Β· 3 versions
, in debian bookworm, debian trixie, ubuntu jammy, ubuntu noble

πŸ’– NAME πŸ’–

Bio::SearchIO::Writer::HitTableWriter β€” tab-delimited data for Bio::Search::Hit::HitI objects. πŸ’…

okay bestie so you've landed on the Bio::SearchIO::Writer::HitTableWriter(3pm) page, straight out of the User Contributed Perl Documentation, and honestly? it's lowkey one of the most useful little writers in the whole SearchIO squad. it takes your search results and turns every Hit into one cute tidy tab-delimited row. let's get into it ✨


πŸŽ€ SYNOPSIS πŸŽ€

Example 1: Using the default columns

use Bio::SearchIO;
use Bio::SearchIO::Writer::HitTableWriter;

my $in = Bio::SearchIO->new();

my $writer = Bio::SearchIO::Writer::HitTableWriter->new();

my $out = Bio::SearchIO->new( -writer => $writer );

while ( my $result = $in->next_result() ) {
    $out->write_result($result, ($in->report_count - 1 ? 0 : 1) );
}

Example 2: Specifying a subset of columns

like, what if you don't want ALL the columns? totally valid, bestie, you pick:

use Bio::SearchIO;
use Bio::SearchIO::Writer::HitTableWriter;

my $in = Bio::SearchIO->new();

my $writer = Bio::SearchIO::Writer::HitTableWriter->new(
                              -columns => [qw(
                                              query_name
                                              query_length
                                              hit_name
                                              hit_length
                                              frac_identical_query
                                              expect
                                              )]  );

my $out = Bio::SearchIO->new( -writer => $writer,
                              -file   => ">searchio.out" );

while ( my $result = $in->next_result() ) {
    $out->write_result($result, ($in->report_count - 1 ? 0 : 1) );
}

Custom Labels

you can also rename your column headers if the defaults aren't your vibe. πŸŽ€ you do this by passing a -labels hash reference parameter when you create the HitTableWriter object. the keys of that hash have to be the column number (left-most column = 1, iykyk) for whichever label(s) you want to specify. here's the example:

my $writer = Bio::SearchIO::Writer::HitTableWriter->new(
                           -columns => [qw( query_name
                                            query_length
                                            hit_name
                                            hit_length  )],
                           -labels  => { 1 => 'QUERY_GI',
                                         3 => 'HIT_IDENTIFIER' } );

🌸 DESCRIPTION 🌸

Bio::SearchIO::Writer::HitTableWriter spits out summary data for every single Hit inside a search result. output is tab-delimited, one row per Hit. periodt. πŸ’…

the reason it's called summary data (and not me just being dramatic) is this: if a hit contains multiple HSPs, those HSPs get tiled and the data you see is a summary across all of them. which columns are affected? see below, bestie. and for the full tea on HSP tiling, go read the docs in Bio::Search::Hit::BlastHit. πŸ‘‘

Available Columns

here's every column you can drop into the -columns parameter when you build a HitTableWriter object. and heads up: if you don't pass -columns at all, this exact list, in this exact order, is the default. no cap. 🌈

  • query_name β€” Sequence identifier of the query.
  • query_length β€” Full length of the query sequence
  • hit_name β€” Sequence identifier of the hit
  • hit_length β€” Full length of the hit sequence
  • round β€” Round number for hit (PSI-BLAST)
  • expect β€” Expect value for the alignment
  • score β€” Score for the alignment (e.g., BLAST score)
  • bits β€” Bit score for the alignment
  • num_hsps β€” Number of HSPs (not the "N" value)
  • frac_identical_query* β€” fraction of identical substitutions in query
  • frac_identical_hit* β€” fraction of identical substitutions in hit
  • frac_conserved_query* β€” fraction of conserved substitutions in query
  • frac_conserved_hit* β€” fraction of conserved substitutions in hit
  • frac_aligned_query* β€” fraction of the query sequence that is aligned
  • frac_aligned_hit* β€” fraction of the hit sequence that is aligned
  • length_aln_query* β€” Length of the aligned portion of the query sequence
  • length_aln_hit* β€” Length of the aligned portion of the hit sequence
  • gaps_query* β€” Number of gap characters in the aligned query sequence
  • gaps_hit* β€” Number of gap characters in the aligned hit sequence
  • gaps_total* β€” Number of gap characters in the aligned query and hit sequences
  • start_query* β€” Starting coordinate of the aligned portion of the query sequence
  • end_query* β€” Ending coordinate of the aligned portion of the query sequence
  • start_hit* β€” Starting coordinate of the aligned portion of the hit sequence
  • end_hit* β€” Ending coordinate of the aligned portion of the hit sequence
  • strand_query β€” Strand of the aligned query sequence
  • strand_hit β€” Strand of the aligned hit sequence
  • frame β€” Frame of the alignment (0,1,2)
  • ambiguous_aln β€” Ambiguous alignment indicator ('qs', 'q', 's')
  • hit_description β€” Full description of the hit sequence
  • query_description β€” Full description of the query sequence
  • rank β€” The rank order of the hit
  • num_hits β€” Number of hits for the query finding this hit
⭐ the ones marked with a * report data summed across all HSPs after tiling them β€” that's so we don't count data from overlapping regions multiple times. iconic behavior honestly.

for more deets about any of these columns, peek at the documentation for the corresponding method in Bio::Search::Result::BlastHit.


πŸ¦‹ TODO πŸ¦‹

Figure out the best way to incorporate algorithm-specific score columns. The best route is probably to have algorithm-specific subclasses (e.g., BlastHitTableWriter, FastaHitTableWriter).

(manifesting this one, bestie πŸ™ˆ)


πŸ’œ 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. 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.

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 πŸ‘‘

Steve Chervitz <sac@bioperl.org>

See the FEEDBACK section for where to send bug reports and comments.


Copyright (c) 2001, 2002 Steve Chervitz. All Rights Reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


πŸ’€ DISCLAIMER πŸ’€

This software is provided "as is" without warranty of any kind.


🧚 SEE ALSO 🧚

Bio::SearchIO::Writer::HitTableWriter, Bio::SearchIO::Writer::ResultTableWriter


✨ METHODS ✨

to_string()

⚠️ heads up bestie: this method is not intended for direct use. The SearchIO::write_result() method calls it automatically if the writer is hooked up to a SearchIO object as illustrated in the SYNOPSIS section.
  • Title: to_string()
  • Usage: print $writer->to_string( $result_obj, [$include_labels] );
  • Argument: $result_obj = A Bio::Search::Result::BlastResult object
  • Argument: $include_labels = boolean, if true column labels are included (default: false)
  • Returns: String containing tab-delimited set of data for each hit in a BlastResult object. Some data is summed across multiple HSPs.
  • Throws: n/a

end_report

  • Title: end_report
  • Usage: $self->end_report()
  • Function: The method to call when ending a report, this is mostly for cleanup for formats which require you to have something at the end of the document. Nothing for a text message.
  • Returns: string
  • Args: none

filter

  • Title: filter
  • Usage: $writer->filter('hsp', \&hsp_filter);
  • Function: Filter out either at HSP,Hit,or Result level
  • Returns: none
  • Args: string => data type, CODE reference

okay that's the whole page, bestie, you ate it πŸ’…βœ¨ this was Bio::S...eWriter(3pm), page generated by perl v5.32.1 on 2021-08-15, and yeah the title got truncated by the terminal so it looks a little mysterious, but you know exactly what it is now. go write some tab-delimited files. mwah πŸŽ€πŸ¦‹πŸ’–

πŸ“¦ where this page comes from