Help-Site Computer Manuals
Software
Hardware
Programming
Networking
  Algorithms & Data Structures   Programming Languages   Revision Control
  Protocols
  Cameras   Computers   Displays   Keyboards & Mice   Motherboards   Networking   Printers & Scanners   Storage
  Windows   Linux & Unix   Mac

Bio::Tk::HitDisplay
Frame-based widget for displaying Fasta or Blast hits/HSPs with optional text annotation

Bio::Tk::HitDisplay - Frame-based widget for displaying Fasta or Blast hits/HSPs with optional text annotation


NAME

Bio::Tk::HitDisplay - Frame-based widget for displaying Fasta or Blast hits/HSPs with optional text annotation


SYNOPSIS


 use Bio::Tk::HitDisplay;

 ...

 $hds = $parent->HitDisplay(?options?);


DESCRIPTION

HitDisplay is a Frame-based widget which contains a Canvas. When provided with a list of data structures, each representing a hit of a query sequence to a database, it draws:

  • A scale
  • This is marked in residues (aa for a protein query, nt for a nucleic acid query)

  • The query sequence
  • Represented as a single green line

  • Database hits
  • A line for each Fasta hit, or a group of lines for each Blast hit (one per HSP)

The coordinates of the hits/HSPs on the subject sequence (i.e. the sequence in the database) are indicated below the ends of each line.

The HitDisplay delegates all standard options to the Canvas contained within it. The non-standard options for HitDisplay are:

-hitdata => \@hitdata
The structure of each element of this list is quite complex. They are normally generated from object(s) representing Blast or Fasta hits e.g.

 Bio::PSU::IO::Blast::Hit

 Bio::PSU::IO::Fasta::Hit

by their respective adapters


 Bio::PSU::IO::Blast::HitAdapter

 Bio::PSU::IO::Fasta::HitAdapter

This is normally hidden, unless you want to go and look.

Each element is a reference to a hash containing the following keys and values:


          { q_id     => 'query id',

            s_id     => 'subject id',

            expect   => 'expect value',

            score    => 'percentage identity',

            overlap  => 'length of hit',

            q_len    => 'query length',

            s_len    => 'subject length',

            data     => \@data,

            text     => "Some text",

            callback => $callback }

@data is a list of references to lists, each of which contains the coordinates of a single Fasta hit or Blast HSP on both the query and subject sequences. Each innermost list contains 4 values; the start and end coordinates on the query sequence (indices 0 and 1) and the start and end coordinates on the subject sequence (indices 2 and 3). A Blast hit with 3 HSPs will look like this:


          [ [ q_start1, q_end1, s_start1, s_end1 ],

            [ q_start2, q_end2, s_start2, s_end2 ],

            [ q_start3, q_end3, s_start3, s_end3 ] ]

The text field may contain any text which should be associated with that hit e.g. a more detailed account of the result or of the subject sequence. The display of this text is bound to a right mouse button click on the subject id in the canvas window. The text will appear just below the hit with one click and a subsequent click will hide it again.

The callback is a code reference which, if defined, will be bound to a left mouse button click on the subject id in the canvas window.

-hitcolours => \%colourhash
The hits or HSPs will be colour-coded according to percentage identity according to the key->value pairs in the colourhash. The default values are:

          { 90 => 'red',

            80 => 'orange',

            60 => 'gold',

            40 => 'yellow' }

This indicates that hits where the query is >= 90% identical to the subject will be red, >= 80% will be orange etc. The hash supplied to -hitcolours will override the defaults.

-interval => integer >= 10
This defines the vertical spacing between hit lines on the canvas. The minimum (and default) value is 10.

Mouse bindings provided:

  • Vertical scrolling
  • Wheel-mouse support is provided by binding buttons 4 and 5 to vertical scrolling (standard Z-axis mapping under XFree86 on Linux).

  • Panning
  • Holding down the middle mouse button while dragging will pan the canvas in all directions

  • Display/hide all text annotations
  • Double-clicking the left mouse button within the canvas will display all text annotations, while double-clicking with the right button will hide them. This is slow at the moment, with more than about 20 hits.

Possible improvements:


METHODS

Interaction with this widget should generally be by means of the standard Perl/Tk options. Internal methods are documented below.


AUTHOR

Keith James (kdj@sanger.ac.uk)


ACKNOWLEDGEMENTS

See Bio::PSU.pod


COPYRIGHT

Copyright (C) 2000 Keith James. All Rights Reserved.


DISCLAIMER

This module is provided ``as is'' without warranty of any kind. It may redistributed under the same conditions as Perl itself.

Populate


 Title   : Populate

 Usage   : N/A

 Function: Standard composite Frame-based widget setup.

         : See 'man Tk::composite' for details

 Returns : Nothing

 Args    : Hash reference

draw_align


 Title   : draw_align

 Usage   : N/A

 Function: Draws hit text, line and coords for the hits

 Returns : Nothing

 Args    : Canvas, hitdata hash reference, left margin for text,

         : x coord for lines, y coord for lines, interval between

         : sets of lines (representing 1 Fasta hit or 1+ Blast

         : HSPs), hitcolours hash reference

h_line


 Title   : h_line

 Usage   : N/A

 Function: Draws a single hit/HSP line with the subject coords

         : below it

 Returns : Nothing

 Args    : Canvas, hit hash reference, x coord for line,

         : y coord for line, line width, line colour

draw_scale


 Title   : draw_scale

 Usage   : N/A

 Function: Draws scale alongside line representing query

         : sequence

 Returns : Nothing

 Args    : Canvas, hit hash reference, left margin for text

         : x coord for line, y coord for line

deannotate_hit


 Title   : deannotate_hit

 Usage   : N/A

 Function: Reverses the effect of annotate_hit

 Returns : Nothing

 Args    : Canvas, text item (subject id), text to be inserted

         : in gap, interval between hits

annotate_hit


 Title   : annotate_hit

 Usage   : N/A

 Function: Displays hit annotation below a hit line by shuffling

         : all canvas elements down the canvas and placing the

         : annotation text in the gap

 Returns : Nothing

Args    : Canvas, text item (subject id), text to be inserted

         : in gap, interval between hits
Programminig
Wy
Wy
yW
Wy
Programming
Wy
Wy
Wy
Wy