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