2
# Generate a simple display of all glyphs for comparison testing
3
# T. Harris (harris@cshl.org)
6
# ./all_glyphs GD > all.png
7
# ./all_glyphs GD 0 1000 > all.png # output in png with a wide view
8
# ./all_glyphs GD::SVG 100 150 > all.svg # output in SVG, zoomed
10
use lib '.','../..','./blib/lib','../../blib/lib','../..';
13
use Bio::Graphics::Panel;
14
use Bio::Graphics::Feature;
16
chomp (my $CLASS = shift);
17
$CLASS or die "\nUsage: lots_of_glyphs IMAGE_CLASS
18
\t- where IMAGE_CLASS is one of GD or GD::SVG
19
\t- GD generate png output; GD::SVG generates SVG.\n";
21
chomp (my $start = shift);
22
chomp (my $end = shift);
27
my $ftr = 'Bio::Graphics::Feature';
28
my $segment = $ftr->new(-start=>$start,-end=>$end,-name=>'ZK154',-type=>'clone');
29
my $panel = Bio::Graphics::Panel->new(
30
-grid => [50,100,150,200,250,300,310,320,330],
31
-gridcolor => 'lightcyan',
43
# -key_style => 'between',
44
-key_style => 'bottom',
45
-image_class => $CLASS,
48
my $zk154_1 = $ftr->new(-start=>-50,-end=>800,-name=>'ZK154.1',-type=>'gene',-source=>'predicted');
49
my $zk154_2 = $ftr->new(-start=>380,-end=>500,-name=>'ZK154.2',-type=>'gene',-source=>'predicted');
50
my $zk154_3 = $ftr->new(-start=>900,-end=>1200,-name=>'ZK154.3',-type=>'gene',-source=>'confirmed');
51
my $xyz4 = $ftr->new(-segments=>[[40,80],[100,120],[200,280],[300,320]],
53
-source =>'mysterious',
54
-subtype=>'predicted',
59
$panel->add_track([$zk154_1,[$zk154_2,$xyz4]],
60
-glyph => 'alignment',
61
-label => 'alignment',
64
-font => 'gdSmallFont',
66
-bgcolor => sub { shift->primary_tag eq 'predicted' ? 'green' : 'blue'},
67
-connector => sub { my $primary_tag = shift->primary_tag;
68
$primary_tag eq 'transcript' ? 'hat'
69
: $primary_tag eq 'alignment' ? 'solid'
71
-connector_color => 'black',
75
my $short_segment = $ftr->new(-start=>200,-end=>1000);
76
$panel->add_track($short_segment,
77
-glyph => 'anchored_arrow',
78
-label => 'anchored_arrow',
79
-key => 'anchored_arrow',
84
-arrowstyle=>'regular',
89
$panel->add_track($segment,
91
-label => 'arrow-minor ticks',
97
-arrowstyle=>'regular',
102
$panel->add_track($segment,
104
-label => 'arrow-major ticks',
109
-arrowstyle=>'filled',
114
my $box = $ftr->new(-start=>100,-end=>600,-name=>'JC8',-type=>'clone');
115
$panel->add_track($box,
121
-font => 'gdLargeFont',
123
-bgcolor => 'turquoise',
129
my $cds = $ftr->new(-segments=>[[1,50],[100,150],[222,280],[380,400],[520,599],[801,900]],
133
-subtype=>'predicted',
136
my $cds2 = $ftr->new(-segments =>[[23,90],[157,201],[256,375],[439,502],[600,725]],
139
-subtype =>'predicted',
142
$panel->add_track([$cds],
151
-frame2f => 'yellow',
154
-frame2r => 'purple',
156
-require_subparts=>1,
161
my $crossbox = $ftr->new(-start=>200,-end=>600);
162
$panel->add_track($crossbox,
163
-glyph => 'crossbox',
164
-label => 'crossbox',
168
# -font => 'gdMediumBold',
175
my $diamonds = $ftr->new(-segments=>[[10,11],[100,101],[201,202],[214,215],[237,238],
176
[300,301],[350,351],[400,550],[601,602],[775,776]],
178
$panel->add_track([$diamonds],
190
'tcgtcaaatgtctattgggtcgaaaagaaggtgaacgagtgctcggtgatgcgttcaaaactcaacacaaatcttcacatttcgctccactagtcgactttatcgattttgattatcatgctcaaatgaagatttccaaagaggcaattgtgcagttgaaaaagaaaatgagcccacatatgacaaagcatggatttttctattcaatgggaaaagaaatagtgaaacgacaaactggagtaattcgaacaaattgtctagattgtctggataggacgaatgccgtacaaacagccatcggacttcaaatgtcacatgatcaagttgcatttctgaatttaaacgcgggaaaagtgaatgtagagcaacgagttgaagagattcttcgtgatttgtggcagaaaaatggagatcagtgtagtacgatctacgcgggaactggagctcttgacggaaagagcaagttgaaagacgcgtcgagatcgcttgcaagaactattcagaataatttgatggatggtgcaaagcaggaatcatttgatttatttttgactggagccgcatatgatccgaggcttttcgatagagcatgtaatatattgccacctagtttgatacaagaatacgctgacgccgtatcgcagcttgtcgagcgaagtcccgaaatcgccgaacctcaatccattaaaatattcgttggaacttggaatgtgaatggaggaaagaatattcataatgtggcattccgtaatgaatcgagtctctcccactggatatttgccaattcaatgacacgtctcgtatctgtagaagatgagcaactagctgatattgtagcaattggagttgaagaacttgttgatttgaatgcaagtaatatggttaaagcaagtaccacaaatcaacgaatgtggtgtgaaagtattcgaaaaactctttctgaaaaagctccatttgtgctcattggctccgagcagctcgtcggtgtttgtctattcctcttcgcaagaccacgtgtctcaccatacctgaaagactttgcagtggcttctgtaaagactggaatgggtggagcaactggaaataagggatccgttgccttccgaatcgtcgtattctccacttctatttgttttatttgttctcactttgcagccgggcaaaacgagattcgagacagaaatgaggattttgcgacgacgttgaaaaagattcgattcccgttgggcagagaaattgactcgcatgacgtcatattttggttgggagatttcaactatcgaattaatttgtcgggggatgaagttaagaatgctgttagaaatggagactatgcgaaattagtcgaaaatgatcaattgacacagcagaaagctcttggacagacatttgttggcttcaacgaaggacagctcacgttcgcaccaacatacaaatacgacacattcagtgatgactatgatacgagtgaaaagtgtcgtgcacccgcatggactgatcgaattctttggaaagatcagagaaagaagggaaaaacgcaacttctcagctatgatagatcagaattaaaaacttctgatcatcgacctgttggagctgttttcaaagtggaaacttttaaagttggcggcagaaaatgtgtggagctcatcgaggatgttgtagaatctatgggtccaccggacggaacaatcattgtcagtattgccggaaaacctcgattcccgccgcaaatgtttccgccgattcatgagaagttgaaggaactcggtgctcaagttcagctgagcaaattcgacgatggcgatctatggattgtactgaatagtggagaaatggcattagccgcattaagtatggatgggctgaagatcggaggaacagatcagattaatgtgaagttgaagtcaccggattgggcttatgctttgaagccacatctttcagattttgatttggaatcgtttgaagtgacggcagaggaagaggcattacttggtggtactgatggtgccgtttttgaatttgcagacgaagacgaggacgcaatcagtgtgtctagtctgacgcttactggttcggctcccgatcgacctcgtccaccatcagcaagaagtgaagcgatcagtgtagccaaacttgaatggccaacagaacaaccaaacgtcctctccacatcaatgccaacacgagcttcatcagcttctcttgccaatagttcttggtatgagcatgtaccaccacttgctccacctcaatcaaacaataataaaagccctccacaagcttgtctattcaatccattcactcaatctgcaccatccccggctccaccaccatccacgattcctcttccaccgactcgtggagcatcagttggaccaggtcctccagcggttcccgtcaggaaggcacccccaccgccacctcggcctgtcattccacctagaccaaaaaatatgtag';
192
my $fragment = Bio::Seq->new(-seq=>$string);
193
my $dna = $ftr->new(-seq=>$fragment,
194
-start=>$start,-end=>$end);
195
$panel->add_track($dna,
208
my $dots = $ftr->new(-segments=>[[10,11],[100,150],[201,232],[214,215],[237,270],
209
[280,281],[300,321],[400,550],[601,602],[775,776]]);
210
$panel->add_track([$dots],
220
my $ellipses = $ftr->new(-segments=>[[100,150],[201,232],[237,270],[300,321],[400,550],[730,776]]);
221
$panel->add_track([$ellipses],
226
-bgcolor => 'orange',
230
my $ex = $ftr->new(-start=>100,-end=>400);
231
$panel->add_track($ex,
237
# -font => 'gdMediumBold',
244
my $partial_gene = $ftr->new(-segments=>[[1,50],[100,150],[220,300],
245
[380,400],[520,600],[800,900]],
246
-name =>'partial_gene',
249
-source =>'confirmed');
251
add_scores($partial_gene);
252
$panel->add_track($partial_gene,
253
-glyph => 'graded_segments',
254
-key => 'graded_segments',
255
-label => 'graded_segments - quill connector',,
257
-connector => 'quill',
260
$panel->add_track($partial_gene,
261
-glyph => 'graded_segments',
262
-label => 'graded_segments - hat connector',
263
-key => 'graded_segments',
268
$panel->add_track($partial_gene,
269
-glyph => 'graded_segments',
270
-label => 'graded_segments - solid connector',
271
-key => 'graded_segments',
272
-bgcolor => 'yellow',
273
-connector => 'solid',
276
$panel->add_track($partial_gene,
277
-glyph => 'graded_segments',
278
-label => 'graded_segments - dashed connector',
279
-key => 'graded_segments',
281
-connector => 'dashed',
284
# heterogenous_segments
285
$panel->add_track([[$zk154_2,$zk154_3],[$zk154_2,$xyz4]],
286
-glyph => 'heterogeneous_segments',
287
-label => 'heterogeneous_segments',
288
-key => 'heterogeneous_segments',
291
-predicted_color=>'orange',
292
-confirmed_color=>'purple',
293
-mysterious_color=>'red',
294
-connector_color => 'black',
298
$panel->add_track($short_segment,
304
# -font => 'gdMediumBold',
311
my $pinsertion = $ftr->new(-segments=>[[10,10],[100,100],[200,200],[300,300],[400,400],
312
[550,600],[650,650]]);
313
$panel->add_track([$pinsertion],
314
-glyph => 'pinsertion',
315
-label => 'pinsertion',
316
-key => 'pinsertion',
318
-bgcolor => 'yellow',
322
my $p = $ftr->new(-start=>200,-end=>600);
323
$panel->add_track($p,
331
# processed_transcript
332
my $trans1 = $ftr->new(-start=>50,-end=>10,-name=>'ZK154.1',-type=>"3'-UTR");
333
my $trans2 = $ftr->new(-start=>100,-end=>50,-name=>'ZK154.2',-type=>'CDS');
334
my $trans3 = $ftr->new(-start=>350,-end=>225,-name=>'ZK154.3',-type=>'CDS');
335
my $trans4 = $ftr->new(-start=>650,-end=>500,-name=>'ZK154.3',-type=>'CDS');
336
my $trans5 = $ftr->new(-start=>700,-end=>650,-name=>'ZK154.3',-type=>"5'-UTR");
337
my $trans = $ftr->new(-segments=>[$trans1,$trans2,$trans3,$trans4,$trans5]);
338
$panel->add_track($trans,
339
-glyph => 'processed_transcript',
340
-key => 'processed_transcript',
341
-label => 'processed_transcript',
346
$panel->add_track($trans,
347
-glyph => 'processed_transcript',
348
-key => 'processed_transcript',
349
-label => 'processed_transcript',
356
$panel->add_track($partial_gene,
357
-glyph => 'redgreen_box',
358
-label => 'redgreen_box',
359
-key => 'redgreen_box',
363
$panel->add_track($partial_gene,
364
-glyph => 'redgreen_segment',
365
-label => 'redgreen_segment',
366
-key => 'redgreen_segment',
370
$panel->add_track($partial_gene,
377
$panel->add_track($partial_gene,
378
-glyph => 'ruler_arrow',
380
-key => 'ruler_arrow',
384
$panel->add_track($partial_gene,
385
-glyph => 'ruler_arrow',
387
-key => 'ruler_arrow',
393
$panel->add_track([$zk154_1,[$zk154_2,$xyz4]],
394
-glyph => 'segments',
395
-label => 'segments',
399
-bgcolor => sub { shift->primary_tag eq 'predicted' ? 'green' : 'blue'},
400
-connector => sub { my $primary_tag = shift->primary_tag;
401
$primary_tag eq 'transcript' ? 'hat'
402
: $primary_tag eq 'alignment' ? 'solid'
404
-connector_color => 'black',
409
my $big_span = $ftr->new(-start=>-400,-end=>3000);
410
my $small_span = $ftr->new(-start=>290,-end=>600);
411
$panel->add_track([$big_span,$small_span],
418
$panel->add_track($partial_gene,
419
-glyph => 'splice_site',
420
-label => 'splice_site',
421
-key => 'splice_site',
422
-direction => 'right',
426
$panel->add_track($trans,
427
-glyph => 'transcript',
428
-label => 'transcript',
429
-key => 'transcript',
435
$panel->add_track($trans,
436
-glyph => 'transcript2',
437
-label => 'transcript2',
438
-key => 'transcript2',
439
-bgcolor => 'purple',
444
$panel->add_track($dna,
445
-glyph => 'translation',
446
-label => 'translation',
447
-key => 'translation',
448
-translation => '3frame',
459
$panel->add_track([$pinsertion],
460
-glyph => 'triangle',
461
-label => 'triangle',
463
-bgcolor => 'yellow',
470
$panel->add_track($partial_gene,
474
-graph_type => 'boxes');
478
my $type = ($CLASS eq 'GD') ? 'png' : 'svg';
489
my @segs = $ftr->segments;