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;