1#!/usr/bin/perl -w
2
3use lib '.','..','./blib/lib','../blib/lib';
4use strict;
5
6use Bio::Graphics::Panel;
7use Bio::Graphics::Feature;
8use GD 'gdMediumBoldFont';
9
10my $ftr = 'Bio::Graphics::Feature';
11
12my $segment = $ftr->new(-start=>-100,-end=>1400,-name=>'ZK154',-type=>'clone');
13my $zk154_1 = $ftr->new(-start=>-50,-end=>800,-name=>'ZK154.1',-type=>'gene');
14my $zk154_2 = $ftr->new(-segments=>[[200,300],[380,800]],-name=>'ZK154.2',-type=>'gene');
15my $zk154_3 = $ftr->new(-start=>900,-end=>1200,-name=>'ZK154.3',-type=>'gene');
16
17my $zed_27 = $ftr->new(-segments=>[[550,600],[800,950],[1200,1300]],
18		   -name=>'zed-27',
19		   -subtype=>'exon',-type=>'transcript');
20my $abc3 = $ftr->new(-segments=>[[100,200],[350,400],[500,550]],
21		    -name=>'abc53',
22		     -strand => -1,
23		    -subtype=>'exon',-type=>'transcript');
24my $xyz4 = $ftr->new(-segments=>[[40,80],[100,120],[200,280],[300,320]],
25		     -name=>'xyz4',
26		     -subtype=>'predicted',-type=>'alignment');
27
28my $m3 = $ftr->new(-segments=>[[20,40],[30,60],[90,270],[290,300]],
29		   -name=>'M3',
30		   -subtype=>'predicted',-type=>'alignment');
31
32my $bigone = $ftr->new(-segments=>[[-200,-120],[90,270],[290,300]],
33		   -name=>'big one',
34		   -subtype=>'predicted',-type=>'alignment');
35
36my $fred_12 = $ftr->new(-segments=>[$xyz4,$zed_27],
37			-type => 'group',
38			-name =>'fred-12');
39
40my $confirmed_exon1 = $ftr->new(-start=>1,-stop=>20,
41				-type=>'exon',
42				-source=>'confirmed',
43				-name => 'confirmed1',
44			       );
45my $predicted_exon1 = $ftr->new(-start=>30,-stop=>50,
46				-type=>'exon',
47				-name=>'predicted1',
48				-source=>'predicted');
49my $predicted_exon2 = $ftr->new(-start=>60,-stop=>100,
50				-name=>'predicted2',
51				-type=>'exon',-source=>'predicted');
52
53my $confirmed_exon3 = $ftr->new(-start=>150,-stop=>190,
54				-type=>'exon',-source=>'confirmed',
55			       -name=>'abc123');
56my $partial_gene = $ftr->new(-segments=>[$confirmed_exon1,$predicted_exon1,$predicted_exon2,$confirmed_exon3],
57			     -name => 'partial gene',
58			     -type => 'transcript',
59			     -source => '(from a big annotation pipeline)'
60			    );
61my @segments = $partial_gene->segments;
62my $score = 10;
63foreach (@segments) {
64  $_->score($score);
65  $score += 10;
66}
67
68my $panel = Bio::Graphics::Panel->new(
69				      -gridcolor => 'lightcyan',
70				      -grid => 1,
71				      -segment => $segment,
72				      -spacing => 15,
73				      -width   => 600,
74				      -pad_top  => 20,
75				      -pad_bottom  => 20,
76				      -pad_left => 20,
77				      -pad_right=> 20,
78				      -key_style => 'between',
79				     );
80my @colors = $panel->color_names();
81
82my $t = $panel->add_track(
83			  transcript2 => [$abc3,$zed_27],
84			  -label => 1,
85			  -bump => 1,
86			  -key => 'Prophecies',
87			  #		  -tkcolor => $colors[rand @colors],
88			 );
89$t->configure(-bump=>1);
90$panel->add_track($segment,
91		  -glyph => 'arrow',
92		  -label => sub {scalar localtime},
93		  -labelfont => gdMediumBoldFont,
94		  -double => 1,
95		  -bump => 0,
96		  -height => 10,
97		  -arrowstyle=>'regular',
98		  -linewidth=>1,
99		  -tick => 2,
100		 );
101
102$panel->add_track(generic => [$segment,$abc3,$zk154_1,[$zk154_2,$xyz4]],
103		  -label     => sub { $_[-1]->level == 0 } ,
104		  -bgcolor   => sub { shift->primary_tag eq 'predicted' ? 'green' : 'blue'},
105		  -connector => sub { my $primary_tag = shift->primary_tag;
106				      $primary_tag eq 'transcript' ? 'hat'
107				    : $primary_tag eq 'alignment'  ? 'solid'
108				    : 'solid'},
109		  -connector_color => 'black',
110		  -height => 10,
111		  -bump => 1,
112#		  -tkcolor => $colors[rand @colors],
113		  -key => 'Signals',
114		 );
115
116my $track = $panel->add_track('transcript2'=>[$bigone],
117			      -label   => 1,
118			      -connector => 'solid',
119			      -point  => 0,
120			      -orient => 'N',
121			      -height => 8,
122			      -base => 1,
123			      -relative_coords => 1,
124			      -tick  => 2,
125			      -bgcolor => 'red',
126			      -key     => 'Dynamically Added');
127#$track->add_feature($bigone,$zed_27,$abc3);
128#$track->add_group($predicted_exon1,$predicted_exon2,$confirmed_exon3);
129$track->add_group($bigone,$zed_27,$zk154_2,$bigone);
130
131my $gd    = $panel->gd;
132my @boxes = $panel->boxes;
133my $red   = $panel->translate_color('red');
134for my $box (@boxes) {
135  my ($feature,@points) = @$box;
136}
137print $gd->png;
138
139