Bio::Graphics::Glyph::whiskerplot man page on Pidora

Man page or keyword search:  
man Server   31170 pages
apropos Keyword Search (all sections)
Output format
Pidora logo
[printable version]

Bio::Graphics::Glyph::UserkContributed PerBio::Graphics::Glyph::whiskerplot(3)

NAME
       Bio::Graphics::Glyph::whiskerplot - The whiskerplot glyph

SYNOPSIS
	 See L<Bio::Graphics::Panel> and L<Bio::Graphics::Glyph>.

DESCRIPTION
       This glyph is used for drawing features associated with numeric data
       using "box and whisker" style data points, which display the mean
       value, extreme ranges and first and third quartiles (or standard
       deviation). The boxes drawn by this glyph are similar to
       <http://www.abs.gov.au/websitedbs/D3310116.NSF/0/3c35ac1e828c23ef4a2567ac0020ec8a?OpenDocument>,
       except that they are oriented vertically so that the position and
       height of the box indicates the mean value and spread of the data, and
       the width indicates the genomic extent of the value.

       Like the xyplot glyph (from which it inherits the whiskerplot is
       designed to work on a single feature group that contains subfeatures.
       It is the subfeatures that carry the score information. The best way to
       arrange for this is to create an aggregator for the feature.  We'll
       take as an example a histogram of repeat density in which interval are
       spaced every megabase and the score indicates the number of repeats in
       the interval; we'll assume that the database has been loaded in in such
       a way that each interval is a distinct feature with the method name
       "density" and the source name "repeat".	Furthermore, all the repeat
       features are grouped together into a single group (the name of the
       group is irrelevant).  If you are using Bio::DB::GFF and Bio::Graphics
       directly, the sequence of events would look like this:

	 my $agg = Bio::DB::GFF::Aggregator->new(-method    => 'repeat_density',
						 -sub_parts => 'density:repeat');
	 my $db	 = Bio::DB::GFF->new(-dsn=>'my_database',
				     -aggregators => $agg);
	 my $segment  = $db->segment('Chr1');
	 my @features = $segment->features('repeat_density');

	 my $panel = Bio::Graphics::Panel->new;
	 $panel->add_track(\@features,
			   -glyph => 'xyplot',
			   -scale => 'both',
       );

       If you are using Generic Genome Browser, you will add this to the
       configuration file:

	 aggregators = repeat_density{density:repeat}
		       clone alignment etc

       Note that it is a good idea to add some padding to the left and right
       of the panel; otherwise the scale will be partially cut off by the edge
       of the image.

       The mean (or median) of the data will be taken from the feature score.
       The range and quartile data must either be provided in a feature tag
       named "range", or must be generated dynamically by a -range callback
       option passed to add_track. The data returned by the tag or option
       should be an array reference containing the following five fields:

	[$median,$range_low,$range_high,$quartile_low,$quartile_high]

       where $range_low and $range_high correspond to the low and high value
       of the "whiskers" and $quartile_low and $quartile_high correspond to
       the low and high value of the "box."

       If $median is undef or missing, then the score field of the feature
       will be used instead. It may be useful to repeat the median in the
       score field in any case, in order to allow the minimum and maximum
       range calculations of the graph itself to occur.

       See Examples for three ways of generating an image.

   OPTIONS
       The following options are standard among all Glyphs.  See
       Bio::Graphics::Glyph for a full explanation.

	 Option	     Description		      Default
	 ------	     -----------		      -------

	 -fgcolor      Foreground color		      black

	 -outlinecolor Synonym for -fgcolor

	 -bgcolor      Background color		      turquoise

	 -fillcolor    Synonym for -bgcolor

	 -linewidth    Line width		      1

	 -height       Height of glyph		      10

	 -font	       Glyph font		      gdSmallFont

	 -label	       Whether to draw a label	      0 (false)

	 -description  Whether to draw a description  0 (false)

	 -hilite       Highlight color		      undef (no color)

       In addition, the alignment glyph recognizes all the options of the
       xyplot glyph, as well as the following glyph-specific option:

	 Option		Description		     Default
	 ------		-----------		     -------

	 -range	       Callback to return median,    none - data comes from feature "range" tag
		       range and quartiles for each
		       sub feature

EXAMPLES
       Here are three examples of how to use this glyph.

   Example 1: Incorporating the numeric data in each subfeature
	#!/usr/bin/perl
	use strict;

	use Bio::Graphics;
	use Bio::SeqFeature::Generic;

	my $bsg = 'Bio::SeqFeature::Generic';

	my $feature = $bsg->new(-start=>0,-end=>1000);

	for (my $i=0;$i<1000;$i+=20) {
	  my $y = (($i-500)/10)**2;
	  my $range = make_range($y);
	  my $part = $bsg->new(-start=>$i,-end=>$i+16,
			      -score=>$y,-tag => { range=>$range });
	  $feature->add_SeqFeature($part);
	}

	my $panel = Bio::Graphics::Panel->new(-length=>1000,-width=>800,-key_style=>'between',
					     -pad_left=>40,-pad_right=>40);
	$panel->add_track($feature,
			 -glyph=>'arrow',
			 -double=>1,
			 -tick=>2);

	$panel->add_track($feature,
			 -glyph=>'whiskerplot',
			 -scale=>'both',
			 -height=>200,
			 -min_score => -500,
			 -key  =>'Whiskers',
			 -bgcolor => 'orange',
			);
	print $panel->png;

	sub make_range {
	  my $score	   = shift;
	  my $range_top	   = $score + 5*sqrt($score) + rand(50);
	  my $range_bottom = $score - 5*sqrt($score) - rand(50);
	  my $quartile_top    = $score + 2*sqrt($score) + rand(50);
	  my $quartile_bottom = $score - 2*sqrt($score) - rand(50);
	  return [$score,$range_bottom,$range_top,$quartile_bottom,$quartile_top];
	}

   Example 2: Generating the range data with a callback
	#!/usr/bin/perl
	use strict;

	use Bio::Graphics;
	use Bio::SeqFeature::Generic;

	my $bsg = 'Bio::SeqFeature::Generic';
	my $feature = $bsg->new(-start=>0,-end=>1000);

	for (my $i=0;$i<1000;$i+=20) {
	  my $y = (($i-500)/10)**2;
	  my $part = $bsg->new(-start=>$i,-end=>$i+16,-score=>$y);
	  $feature->add_SeqFeature($part);
	}

	my $panel = Bio::Graphics::Panel->new(-length=>1000,-width=>800,-key_style=>'between',
					     -pad_left=>40,-pad_right=>40);
	$panel->add_track($feature,
			 -glyph=>'arrow',
			 -double=>1,
			 -tick=>2);

	$panel->add_track($feature,
			 -glyph=>'whiskerplot',
			 -scale=>'both',
			 -height=>200,
			 -min_score => -500,
			 -key  =>'Whiskers',
			 -bgcolor => 'orange',
			 -range => \&make_range,
			);
	print $panel->png;

	sub make_range {
	  my $feature = shift;
	  my $score	   = $feature->score;
	  my $range_top	   = $score + 5*sqrt($score) + rand(50);
	  my $range_bottom = $score - 5*sqrt($score) - rand(50);
	  my $quartile_top    = $score + 2*sqrt($score) + rand(50);
	  my $quartile_bottom = $score - 2*sqrt($score) - rand(50);
	  return [$score,$range_bottom,$range_top,$quartile_bottom,$quartile_top];
	}

   Example 3: Generating the image from a FeatureFile
       The file:
	    [general]
	    pixels = 840
	    pad_left = 40
	    pad_right = 40

	    [contig]
	    glyph     = arrow
	    double    = 1
	    tick      = 2

	    [data]
	    glyph     = whiskerplot
	    scale     = both
	    height    = 200
	    min_score = -500
	    max_score = 2800
	    key	      = Whiskers
	    bgcolor   = orange

	    chr1   .	   contig  1	   1000	   .	   .	   .	   Contig chr1
	    chr1   .	   data	   0	   16	   2500	   .	   .	   Dataset data1; range 2209,2769,2368,2619
	    chr1   .	   data	   20	   36	   2304	   .	   .	   Dataset data1; range 2051,2553,2163,2435
	    chr1   .	   data	   40	   56	   2116	   .	   .	   Dataset data1; range 1861,2384,1983,2253
	    chr1   .	   data	   60	   76	   1936	   .	   .	   Dataset data1; range 1706,2181,1819,2059
	    chr1   .	   data	   80	   96	   1764	   .	   .	   Dataset data1; range 1516,1995,1646,1849
	    chr1   .	   data	   100	   116	   1600	   .	   .	   Dataset data1; range 1359,1834,1513,1699
	    chr1   .	   data	   120	   136	   1444	   .	   .	   Dataset data1; range 1228,1654,1330,1565
	    chr1   .	   data	   140	   156	   1296	   .	   .	   Dataset data1; range 1105,1520,1198,1385
	    chr1   .	   data	   160	   176	   1156	   .	   .	   Dataset data1; range 983,1373,1062,1270
	    chr1   .	   data	   180	   196	   1024	   .	   .	   Dataset data1; range 853,1184,914,1116
	    chr1   .	   data	   200	   216	   900	   .	   .	   Dataset data1; range 722,1093,801,965
	    chr1   .	   data	   220	   236	   784	   .	   .	   Dataset data1; range 621,945,724,859
	    chr1   .	   data	   240	   256	   676	   .	   .	   Dataset data1; range 532,833,605,742
	    chr1   .	   data	   260	   276	   576	   .	   .	   Dataset data1; range 433,714,485,653
	    chr1   .	   data	   280	   296	   484	   .	   .	   Dataset data1; range 331,600,418,545
	    chr1   .	   data	   300	   316	   400	   .	   .	   Dataset data1; range 275,535,336,459
	    chr1   .	   data	   320	   336	   324	   .	   .	   Dataset data1; range 198,434,270,374
	    chr1   .	   data	   340	   356	   256	   .	   .	   Dataset data1; range 167,378,219,322
	    chr1   .	   data	   360	   376	   196	   .	   .	   Dataset data1; range 114,303,118,249
	    chr1   .	   data	   380	   396	   144	   .	   .	   Dataset data1; range 39,248,87,197
	    chr1   .	   data	   400	   416	   100	   .	   .	   Dataset data1; range 17,173,68,141
	    chr1   .	   data	   420	   436	   64	   .	   .	   Dataset data1; range -14,125,18,84
	    chr1   .	   data	   440	   456	   36	   .	   .	   Dataset data1; range -8,74,11,64
	    chr1   .	   data	   460	   476	   16	   .	   .	   Dataset data1; range -46,77,0,43
	    chr1   .	   data	   480	   496	   4	   .	   .	   Dataset data1; range -40,43,-7,36
	    chr1   .	   data	   500	   516	   0	   .	   .	   Dataset data1; range -43,0,-43,22
	    chr1   .	   data	   520	   536	   4	   .	   .	   Dataset data1; range -6,52,-4,54
	    chr1   .	   data	   540	   556	   16	   .	   .	   Dataset data1; range -5,38,-27,52
	    chr1   .	   data	   560	   576	   36	   .	   .	   Dataset data1; range -43,109,18,66
	    chr1   .	   data	   580	   596	   64	   .	   .	   Dataset data1; range -1,134,3,112
	    chr1   .	   data	   600	   616	   100	   .	   .	   Dataset data1; range 49,186,69,124
	    chr1   .	   data	   620	   636	   144	   .	   .	   Dataset data1; range 79,225,71,169
	    chr1   .	   data	   640	   656	   196	   .	   .	   Dataset data1; range 124,289,120,266
	    chr1   .	   data	   660	   676	   256	   .	   .	   Dataset data1; range 154,378,197,320
	    chr1   .	   data	   680	   696	   324	   .	   .	   Dataset data1; range 220,439,249,396
	    chr1   .	   data	   700	   716	   400	   .	   .	   Dataset data1; range 291,511,331,458
	    chr1   .	   data	   720	   736	   484	   .	   .	   Dataset data1; range 350,627,400,572
	    chr1   .	   data	   740	   756	   576	   .	   .	   Dataset data1; range 446,718,502,633
	    chr1   .	   data	   760	   776	   676	   .	   .	   Dataset data1; range 515,833,576,777
	    chr1   .	   data	   780	   796	   784	   .	   .	   Dataset data1; range 606,959,724,856
	    chr1   .	   data	   800	   816	   900	   .	   .	   Dataset data1; range 747,1058,799,1004
	    chr1   .	   data	   820	   836	   1024	   .	   .	   Dataset data1; range 817,1231,958,1089
	    chr1   .	   data	   840	   856	   1156	   .	   .	   Dataset data1; range 961,1341,1069,1225
	    chr1   .	   data	   860	   876	   1296	   .	   .	   Dataset data1; range 1103,1511,1219,1385
	    chr1   .	   data	   880	   896	   1444	   .	   .	   Dataset data1; range 1218,1660,1338,1535
	    chr1   .	   data	   900	   916	   1600	   .	   .	   Dataset data1; range 1377,1828,1496,1703
	    chr1   .	   data	   920	   936	   1764	   .	   .	   Dataset data1; range 1547,2020,1674,1858
	    chr1   .	   data	   940	   956	   1936	   .	   .	   Dataset data1; range 1691,2188,1824,2043
	    chr1   .	   data	   960	   976	   2116	   .	   .	   Dataset data1; range 1869,2376,2019,2225
	    chr1   .	   data	   980	   996	   2304	   .	   .	   Dataset data1; range 2040,2554,2178,2418

       The script to render it
	    #!/usr/bin/perl

	    use strict;
	    use Bio::Graphics::FeatureFile;

	    my $data = Bio::Graphics::FeatureFile->new(-file=>'test.gff');

	    my(undef,$panel) = $data->render;
	    print $panel->png;

BUGS
       Please report them.

SEE ALSO
       Bio::Graphics::Panel, Bio::Graphics::Track,
       Bio::Graphics::Glyph::transcript2,
       Bio::Graphics::Glyph::anchored_arrow, Bio::Graphics::Glyph::arrow,
       Bio::Graphics::Glyph::box, Bio::Graphics::Glyph::primers,
       Bio::Graphics::Glyph::segments, Bio::Graphics::Glyph::toomany,
       Bio::Graphics::Glyph::transcript,

AUTHOR
       Lincoln Stein <lstein@cshl.org>

       Copyright (c) 2001 Cold Spring Harbor Laboratory

       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.  See DISCLAIMER.txt for
       disclaimers of warranty.

perl v5.14.1			  2011-07-Bio::Graphics::Glyph::whiskerplot(3)
[top]

List of man pages available for Pidora

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net