The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
[GENERAL]
header        = <table><tr><td width="160" valign="middle"><a href="@siteWebAppUrl@/home.jsp"><img border="0" src="@siteWebAppUrl@/images/plasmodb_logo.gif"></a></td><td align="center" valign="middle"><font size="+4" color="darkblue">Genome Browser</font></td></tr><tr><td><a href="@siteWebAppUrl@/home.jsp">>>PlasmoDB Home</a></td></tr></table>
description   = Genome Sequence
db_adaptor    = DAS::GUS
database      = dbi:Oracle:plasmobld.db.dell.upenn.edu
user          = plasmouser
pass          = unknown
db_args       = -sqlfile @confTargetDir@/gbrowse.conf/plasmodb.xml

#plugins = AttributeHiliter 
plugins = Aligner RestrictionAnnotator FastaDumper GFFDumper BatchDumper

# DAS reference server
# das mapmaster = http://peach.ctegd.uga.edu/cgi-bin/das/cryptodb
# das landmark = AAEE01000001

# 'region' or 'contig' would be other typical choices,
reference class  = chromosome

# Web site configuration info
stylesheet  = /gbrowse/gbrowse.css
buttons     = /gbrowse/images/buttons
js          = /gbrowse/js
tmpimages   = @gbrowseTargetUrl@/tmp @gbrowseTargetDir@/tmp

# Default glyph settings
glyph       = generic
height      = 8
bgcolor     = cyan
fgcolor     = cyan
label density = 25
bump density  = 2000

show sources = 0
default varying = 1 # tracks appear as defined below, not in alphabetical order

# where to link to when user clicks in detailed view
link        = /cgi-bin/gbrowse/plasmodb

# what image widths to offer
image widths  = 640 800 1024 1280

truecolor = 1

# default width of detailed view (pixels)
default width = 800
default features = AnnotatedGenes GeneDensity:overview

# max and default segment sizes for detailed view
max segment     = 10000000
default segment = 50000

# zoom levels
zoom levels    = 100 200 1000 2000 5000 10000 20000 30000 40000 60000 100000 200000 500000 1000000 2000000 4000000

# colors of the overview, detailed map and key
overview bgcolor = lavenderblush
detailed bgcolor = thistle
key bgcolor      = mistyrose

# examples to show in the introduction
examples = MAL11:20000-65000
		   MAL12:106357-116356
		   ctg_6663:1-50000
		   Kinase
		   "Transmembrane Protein"

# "automatic" classes to try when an unqualified identifier is given
automatic classes = gene

language = en

# empty_tracks = suppress

# a footer
footer = <hr>

# Various places where you can insert your own HTML -- see configuration docs
html1 = 
html2 = 
html3 = 
html4 = 
html5 = 
html6 = <script type="text/javascript" src="@gbrowseTargetUrl@/wz_tooltip.js"></script>

init_code = sub hover {
              use HTML::Template;
	      my ($name, $data) = @_;
	      my $tmpl = HTML::Template->new(filename => '@gbrowseTargetDir@/hover.tmpl');
	      $tmpl->param(DATA => [ map { { @$_ > 1 ? (KEY => $_->[0], VALUE => $_->[1]) : (SINGLE => $_->[0]) } } @$data ]);
	      my $str = $tmpl->output;
	      $str =~ s/'/\\'/g;
	      $str =~ s/\s+$//;
	      my $cmd = "this.T_STICKY=false;this.T_TITLE='$name'";
	      $cmd = qq{" onMouseOver="$cmd;return escape('$str')};
	      return $cmd;
	    }

postgrid = sub {
             my ($gd, $panel) = @_;
	     $gd->alphaBlending(0);
	     $gd->saveAlpha(1);
	     $panel->boxes(); # causes the layout to be calculated
	     use Tie::IxHash;
	     my %orthologs;
	     my %location;
	     my %drawn;
	     my %newdrawn;
	     for my $track (@{$panel->{tracks}}) {
	       for my $part (@{$track->{parts}}) {
		 my $feature = $part->{feature};
		 next unless $feature->isa("Bio::SeqFeatureI");
		 my @orthologs = $feature->get_tag_values("Ortholog");
		 next unless @orthologs;
		 my $gene = $feature->name;
		 for my $ortholog (@orthologs) {
  		   unless (exists $orthologs{$ortholog}) {
		     tie(%{$orthologs{$ortholog}}, "Tie::IxHash");
  		   }
		   $orthologs{$ortholog}->{$gene}++;
		 }
                 my $yoffset = $panel->track_position($track);
		 my $padleft = $panel->pad_left();
		 my ($x1, $y1, $x2, $y2) = $part->bounds();
		 $x1 += $padleft;
		 $x2 += $padleft;
		 $y1 += $yoffset - 2;
		 $y2 += $yoffset + 2;
		 $location{$gene} = [ $x1, $y1, $x2, $y2 ];
		 if (exists $orthologs{$gene}) {
		   ORTHOLOGS : for my $ortholog (keys %{$orthologs{$gene}}) {
		     unless (exists $location{$ortholog}) {
		       warn "no location for $ortholog (ortholog of $gene)\n";
		       next ORTHOLOGS;
		     }
		     if ($drawn{$ortholog}) {
		       for my $coortholog (@orthologs) {
			 next ORTHOLOGS if $drawn{$ortholog}->{$coortholog};
		       }
		     }
		     $newdrawn{$ortholog}->{$gene}++;
		     my ($ox1, $oy1, $ox2, $oy2) = @{$location{$ortholog}};
		     my $polygon = GD::Polygon->new();
		     $polygon->addPt($ox1, $oy2);
		     $polygon->addPt($ox2, $oy2);
		     $polygon->addPt($x2, $y1);
		     $polygon->addPt($x1, $y1);
		     $gd->filledPolygon($polygon, $gd->colorAllocateAlpha($panel->color_name_to_rgb("darkgray"), 100));
		     # $gd->openPolygon($polygon, $gd->colorAllocateAlpha($panel->color_name_to_rgb("lightsteelblue"), 0));
		     $gd->line($ox1, $oy2, $x1, $y1, $panel->translate_color("lightsteelblue"));
		     $gd->line($ox2, $oy2, $x2, $y1, $panel->translate_color("lightsteelblue"));
		   }
		 }
	       }
	       while (my ($key, $value) = each %newdrawn) {
		 $drawn{$key} = { %{$drawn{$key} || {}}, %{$value || {}} };
	       }
	       %newdrawn = undef;
             }
           }

### TRACK CONFIGURATION ####
# the remainder of the sections configure individual tracks

###################################
# Plugin configuration
###################################

[GeneDensity:overview]
feature      = annotation:density
glyph        = xyplot
graph_type   = boxes
bump density = 1
scale        = right
#scale       = both
bgcolor      = lightslategray
fgcolor      = bgcolor
height       = 60
min_score    = 0
label        = 0
key          = Gene Density
citation     = Density plot of annotated genes.

[AnnotatedGenes]
feature      = gene:annotation
preset       = AnnotatedGenes
glyph        = processed_transcript
bgcolor      = sub {
                 my $f = shift;
		 $f->strand == +1 ? "blue" : "red";
               }
font2color   = darkgrey
# font2color   = sub {
#                  my $f = shift;
#                  $f->strand == +1 ? "navy" : "maroon";
#                }
height       = 10
title        = sub {
                 my $f = shift;
		 my $name = $f->name;
		 my $chr = $f->seq_id;
		 my $loc = $f->location->to_FTstring;
		 my ($desc) = $f->get_tag_values("Note");
		 my ($taxon) = $f->get_tag_values("Taxon");
	   	 my ($isPseudo) = $f->get_tag_values("IsPseudo");
		 my ($soTerm) = $f->get_tag_values("SOTerm");
	         $soTerm =~ s/\_/ /g;
	         $soTerm =~ s/\b(\w)/\U$1/g;
                 my $cds = qq(<a href=../../../cgi-bin/geneSrt?ids=$name&type=CDS&upstreamAnchor=Start&upstreamOffset=0&downstreamAnchor=End&downstreamOffset=0&go=Get+Sequences target=_blank>CDS</a>);
                 my $protein = qq(<a href=../../../cgi-bin/geneSrt?ids=$name&type=protein&upstreamAnchor=Start&upstreamOffset=0&downstreamAnchor=End&downstreamOffset=0&go=Get+Sequences target=_blank>protein</a>);
		 my @data;
		 push @data, [ 'Species:' => $taxon ];	
		 push @data, [ 'Name:'  => $name ];
		 push @data, [ 'Gene Type:' => ($isPseudo ? "Pseudogenic " : "") . $soTerm  ];
		 push @data, [ 'Description:' => $desc ];
                 # push @data, [ 'Coordinates:' => $f->start . ' .. ' . $f->end ];
		 push @data, [ 'Location:'  => "$chr $loc" ];
                 push @data, [ 'Download:' => $cds. ' | '. $protein];
		 hover("Annotated Gene: $name", \@data);
	       }
description  = 1
label        = 1
link         = @siteWebAppUrl@/showRecord.do?name=GeneRecordClasses.GeneRecordClass&primary_key=$name
key          = Annotated Genes 
citation     = Structural and functional gene annotation provided by the
               sequencing centers.

[TGI]
feature      = match:TGI
preset       = TGI
glyph        = graded_segments
strand_arrow = 1
bgcolor      = sub {
                 my $f = shift;
		 $f->strand == +1 ? "mediumblue" : "crimson";
               }
height       = 10 
title        = sub {
                 my $f = shift;
		 my $name = $f->name;
		 my $chr = $f->seq_id;
		 my $loc = $f->location->to_FTstring;
		 my ($desc) = $f->get_tag_values("Note");
 		 $desc ||= "<i>unavailable</i>";
		 my ($db) = $f->get_tag_values("TGI");
		 my ($ver) = $f->get_tag_values("TGIver");
		 my @data;
		 push @data, [ 'Accession: ' => $name ];
		 # push @data, [ 'Location: ' => "$chr $loc" ];
		 push @data, [ 'Description: ' => $desc ];
		 hover("TGI $db $ver Assembly: $name", \@data);
	       }
link         = sub {
                 my $f = shift;
		 my $name = $f->name;
		 my ($species) = $f->get_tag_values("TGISpecies"); 
	         if ($name =~ m/^TC/) {
		   "http://www.tigr.org/tigr-scripts/tgi/tc_report.pl?tc=$name&species=$species";
		 } elsif ($name =~ m/^EST/) {
		   "http://www.tigr.org/tigr-scripts/tgi/est_report.pl?EST=$name&species=$species";
		 } elsif ($name =~ m/^(NP|HT|ET)/) {
 		   "http://www.tigr.org/tigr-scripts/tgi/egad_report.pl?htnum=$name";
		 } else {
		   "http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=nucleotide&cmd=search&term=$name";
		 }
               }
key          = EST Assemblies (TGI)
citation     = Spliced alignments of consensus EST assemblies, provided by the TIGR Gene Indices project; spliced alignments were performed using <code>megablast</code> and the NCBI <code>Splign</code> algorithm.

[BLASTX]
feature      = match:BLASTX
preset       = BLASTX
glyph        = graded_segments
strand_arrow = 1
bump_limit   = 10
bgcolor      = sub {
                 my $f = shift;
		 $f->strand == +1 ? "mediumblue" : "crimson";
               }
height       = 8
label        = 0
title        = sub {
                 my $f = shift;
		 my $name = $f->name;
		 my $chr = $f->seq_id;
		 my $loc = $f->location->to_FTstring;
		 my ($desc) = $f->get_tag_values("Note");
 		 $desc ||= "<i>unavailable</i>";
	         $desc =~ s/\001.*//;
		 my @data;
		 push @data, [ 'Accession: ' => "gi\|$name" ];
		 # push @data, [ 'Location: ' => "$chr $loc" ];
		 push @data, [ 'Description: ' => $desc ];
		 hover("BLASTX: gi\|$name", \@data);
	       }
link         = http://ncbi.nlm.nih.gov/entrez.cgi?$name
key          = BLASTX Alignments
citation     = Genomic sequences were used as queries in BLASTX searches against NCBI's non-redundant protein database (NRDB).

[DNA/GC Content]
glyph        = dna
global feature = 1
height       = 40
do_gc        = 1
gc_window    = 100
link         =
fgcolor      = red
axis_color   = blue
citation     = It displays a GC content graph of the reference sequence at low magnifications and the DNA sequence itself at higher magnifications.
das category = translation

[SNPs]
feature  = SNP:Su
category = Genetic Features
#glyph   = allele_tower
glyph    = diamond
key      = Genotyped SNPs
bgcolor	= sub {
	     my $f = shift;
             my ($nonSyn) = $f->get_tag_values("NonSyn"); 
             return $nonSyn? 'blue' : 'lightblue'; 
          }
fgcolor  = bgcolor
citation = SNPs provided by Su. Blue for 'Non-synonymous' SNPs.  Light blue for 'Synonymous or non-coding' SNPs.
title    = sub {
	     my $f = shift;
             my ($isCoding) = $f->get_tag_values("IsCoding"); 
             my ($posInCDS) = $f->get_tag_values("PositionInCDS"); 
             my ($posInProtein) = $f->get_tag_values("PositionInProtein"); 
             my ($refStrain) = $f->get_tag_values("RefStrain"); 
             my ($refAA) = $f->get_tag_values("RefAA"); 
             my ($refNA) = $f->get_tag_values("RefNA"); 
             my ($nonSyn) = $f->get_tag_values("NonSyn"); 
             my $variants = $f->bulkAttributes();
	     my @data;
             push @data, [ 'Location:'  => $f->start ];
             my $type = 'Non-Coding';
             if ($isCoding) {
                $refAA = ": $refAA"; 
                my $non = $nonSyn? 'non-' : '';
                $type = "Coding (${non}synonymous)";
                push @data, [ 'Position in CDS:'  => $posInCDS ];
                push @data, [ 'Position in Protein:'  => $posInProtein ];
             }
             push @data, ["Strain: $refStrain (reference)"=>"$refNA $refAA"];
             foreach my $variant (@$variants) {
               my $strain = $variant->{STRAIN};
               my $na = $variant->{ALLELE};
               my $aa = $variant->{PRODUCT};
               my $info = "$na" . ($isCoding? " : $aa" : "");
               push @data, [ "Strain: $strain" => $info ];
             }
             hover( "SNP - $type", \@data);
	  }

[LowComplexity]
feature      = lowcomplexity:dust
preset       = LowComplexity
glyph        = segments
bgcolor      = grey
height       = 6
description  = 0
label        = 0
link         = 
key          = Low Complexity Regions
citation     = Regions of low sequence complexity, as defined by the
               <code>dust</code> algorithm

[TandemRepeat]
feature      = TandemRepeat:TRF
preset       = TandemRepeat
glyph        = segments
bgcolor      = darkgrey
height       = 6
description  = 0
label        = 0
link         = 
key          = Tandem Repeats
citation     = Regions of tandem repeats, as defined by the
               <code>Tandem Repeats Finder</code> program by Gary Benson
[TranslationF]
glyph        = translation
preset       = TranslationF
global feature = 1
frame0       = cadetblue
frame1       = blue
frame2       = darkblue
height       = 20
fgcolor      = purple
strand       = +1
translation  = 3frame
link         =
das category = translation
key          = 3-frame translation (forward)
citation     = It draws three frame conceptutal translations. At low magnifications (zoomed way out), this track draws littel symbols indicating where start and stop codons are. At high magnifications, the actual amino acid sequence comes into view. <br /><br /> Frame +1: cadetblue <br />Frame +2: blue <br />Frame +3: darkblue

[TranslationR]
glyph        = translation
preset       = TranslationR
global feature = 1
frame0       = darkred
frame1       = red
frame2       = crimson
height       = 20
fgcolor      = blue
strand       = -1
link         =
translation  = 3frame
das category = translation
key          = 3-frame translation (reverse)
citation     = It draws three frame conceptutal translations. At low magnifications (zoomed way out), this track draws littel symbols indicating where start and stop codons are. At high magnifications, the actual amino acid sequence comes into view. <br /><br />Frame -1: darkred<br />Frame -2: red<br />Frame -3: crimson<br />

[SyntenySpansVivaxMC]
feature      = match:syntenyVivaxMC
glyph        = arrow
linewidth    = 2
relative_coords = 1
relative_coords_offset = sub { my $f = shift; my ($off) = $f->get_tag_values("Start"); $off }
tick         = 2
base         = 1
# scale        = sub { my $f = shift; my ($scale) = $f->get_tag_values("Scale"); warn $scale; 1 / $scale }
stranded     = 1
tkcolor      = azure
height       = 10 
title        = sub {
                 my $f = shift;
		 my $name = $f->name;
		 my $chr = $f->seq_id;
		 my $loc = $f->location->to_FTstring;
		 my ($start) = $f->get_tag_values("Start");
		 my ($end) = $f->get_tag_values("End");
		 my $synloc = $f->strand == +1 ? "$start..$end" : "complement($start..$end)";
		 my @data;
		 push @data, [ 'Syntenic to: ' => "$name $synloc" ];
		 # push @data, [ 'Location: ' => "$chr $loc" ];
		 hover("Synteny Span", \@data);
	       }
link         = sub {
                 my $f = shift;
		 my $name = $f->name;
		 my ($start) = $f->get_tag_values("Start");
		 my ($end) = $f->get_tag_values("End");
                 "/cgi-bin/gbrowse/plasmodb/?name=$name:$start..$end";
	       }
key          = Pv-Pf Synteny
citation     = Stretches of likely chromosomal synteny between
               <I>P. falciparum</i> and <i>P. vivax</i>.

[SyntenySpansYoeliiMC]
feature      = match:syntenyYoeliiMC
glyph        = arrow
linewidth    = 2
relative_coords = 1
relative_coords_offset = sub { my $f = shift; my ($off) = $f->get_tag_values("Start"); $off }
tick         = 2
base         = 1
#scale        = sub { my $f = shift; my ($scale) = $f->get_tag_values("Scale"); 1 / $scale }
tkcolor      = lavender
stranded     = 1
height       = 10 
title        = sub {
                 my $f = shift;
		 my $name = $f->name;
		 my $chr = $f->seq_id;
		 my $loc = $f->location->to_FTstring;
		 my ($start) = $f->get_tag_values("Start");
		 my ($end) = $f->get_tag_values("End");
		 my $synloc = $f->strand == +1 ? "$start..$end" : "complement($start..$end)";
		 my @data;
		 push @data, [ 'Syntenic to: ' => "$name $synloc" ];
		 # push @data, [ 'Location: ' => "$chr $loc" ];
		 hover("Synteny Span", \@data);
	       }
link         = sub {
                 my $f = shift;
		 my $name = $f->name;
		 my ($start) = $f->get_tag_values("Start");
		 my ($end) = $f->get_tag_values("End");
                 "/cgi-bin/gbrowse/plasmodb/?name=$name:$start..$end";
	       }
key          = Py-Pf Synteny
citation     = Stretches of likely chromosomal synteny between
               <I>P. falciparum</i> and <i>P. yoelii</i>.

[SyntenySpansBerghei]
feature      = match:syntenyBerghei
glyph        = arrow
linewidth    = 2
relative_coords = 1
relative_coords_offset = sub { my $f = shift; my ($off) = $f->get_tag_values("Start"); $off }
tick         = 2
base         = 1
#scale        = sub { my $f = shift; my ($scale) = $f->get_tag_values("Scale"); 1 / $scale }
tkcolor      = lavender
stranded     = 1
height       = 10 
title        = sub {
                 my $f = shift;
		 my $name = $f->name;
		 my $chr = $f->seq_id;
		 my $loc = $f->location->to_FTstring;
		 my ($start) = $f->get_tag_values("Start");
		 my ($end) = $f->get_tag_values("End");
		 my $synloc = $f->strand == +1 ? "$start..$end" : "complement($start..$end)";
		 my @data;
		 push @data, [ 'Syntenic to: ' => "$name $synloc" ];
		 # push @data, [ 'Location: ' => "$chr $loc" ];
		 hover("Synteny Span", \@data);
	       }
link         = sub {
                 my $f = shift;
		 my $name = $f->name;
		 my ($start) = $f->get_tag_values("Start");
		 my ($end) = $f->get_tag_values("End");
                 "/cgi-bin/gbrowse/plasmodb/?name=$name:$start..$end";
	       }
key          = Pb-Pf Synteny
citation     = Stretches of likely chromosomal synteny between
               <I>P. falciparum</i> and <i>P. berghei</i>.

[SyntenySpansChabaudi]
feature      = match:syntenyChabaudi
glyph        = arrow
linewidth    = 2
relative_coords = 1
relative_coords_offset = sub { my $f = shift; my ($off) = $f->get_tag_values("Start"); $off }
tick         = 2
base         = 1
#scale        = sub { my $f = shift; my ($scale) = $f->get_tag_values("Scale"); 1 / $scale }
tkcolor      = lavender
stranded     = 1
height       = 10 
title        = sub {
                 my $f = shift;
		 my $name = $f->name;
		 my $chr = $f->seq_id;
		 my $loc = $f->location->to_FTstring;
		 my ($start) = $f->get_tag_values("Start");
		 my ($end) = $f->get_tag_values("End");
		 my $synloc = $f->strand == +1 ? "$start..$end" : "complement($start..$end)";
		 my @data;
		 push @data, [ 'Syntenic to: ' => "$name $synloc" ];
		 # push @data, [ 'Location: ' => "$chr $loc" ];
		 hover("Synteny Span", \@data);
	       }
link         = sub {
                 my $f = shift;
		 my $name = $f->name;
		 my ($start) = $f->get_tag_values("Start");
		 my ($end) = $f->get_tag_values("End");
                 "/cgi-bin/gbrowse/plasmodb/?name=$name:$start..$end";
	       }
key          = Pc-Pf Synteny
citation     = Stretches of likely chromosomal synteny between
               <I>P. falciparum</i> and <i>P. chabaudi</i>.

[SyntenyGenesVivaxMC]
feature      = gene:syntenyVivaxMC
glyph        = processed_transcript
description  = 1
label        = 1
font2color   = darkgrey
tkcolor      = azure
bgcolor      = sub {
                 my $f = shift;
		 $f->strand == +1 ? "blue" : "red";
               }
height       = 10 
title        = sub {
                 my $f = shift;
		 my $name = $f->name;
		 my $chr = $f->seq_id;
		 my $loc = $f->location->to_FTstring;
		 my ($desc) = $f->get_tag_values("Note");
		 my ($taxon) = $f->get_tag_values("Taxon");
	   	 my ($isPseudo) = $f->get_tag_values("IsPseudo");
		 my ($soTerm) = $f->get_tag_values("SOTerm");
	         $soTerm =~ s/\_/ /g;
	         $soTerm =~ s/\b(\w)/\U$1/g;
		 my @data;
		 push @data, [ 'Species:' => $taxon ];	
		 push @data, [ 'Name:'  => $name ];
		 push @data, [ 'Gene Type:' => ($isPseudo ? "Pseudogenic " : "") . $soTerm  ];
		 push @data, [ 'Description:' => $desc ];
		 # push @data, [ 'Location:'  => "$chr $loc" ];
		 hover("Syntenic Gene: $name", \@data);
	       }
link         = @siteWebAppUrl@/showRecord.do?name=GeneRecordClasses.GeneRecordClass&primary_key=$name
key          = Pv-Pf Syn Genes
citation     = Genes found within syntenic spans.

[SyntenyGenesYoeliiMC]
feature      = gene:syntenyYoeliiMC
glyph        = processed_transcript
description  = 1
label        = 1
font2color   = darkgrey
tkcolor      = lavender
bgcolor      = sub {
                 my $f = shift;
		 $f->strand == +1 ? "blue" : "red";
               }
height       = 10 
title        = sub {
                 my $f = shift;
		 my $name = $f->name;
		 my $chr = $f->seq_id;
		 my $loc = $f->location->to_FTstring;
		 my ($desc) = $f->get_tag_values("Note");
		 my ($taxon) = $f->get_tag_values("Taxon");
	   	 my ($isPseudo) = $f->get_tag_values("IsPseudo");
		 my ($soTerm) = $f->get_tag_values("SOTerm");
	         $soTerm =~ s/\_/ /g;
	         $soTerm =~ s/\b(\w)/\U$1/g;
		 my @data;
		 push @data, [ 'Species:' => $taxon ];	
		 push @data, [ 'Name:'  => $name ];
		 push @data, [ 'Gene Type:' => ($isPseudo ? "Pseudogenic " : "") . $soTerm  ];
		 push @data, [ 'Description:' => $desc ];
		 # push @data, [ 'Location:'  => "$chr $loc" ];
		 hover("Syntenic Gene: $name", \@data);
	       }
link         = @siteWebAppUrl@/showRecord.do?name=GeneRecordClasses.GeneRecordClass&primary_key=$name
key          = Py-Pf Syn Genes
citation     = Genes found within syntenic spans.


[SyntenyGenesBerghei]
feature      = gene:syntenyBerghei
glyph        = processed_transcript
description  = 1
label        = 1
font2color   = darkgrey
tkcolor      = lavender
bgcolor      = sub {
                 my $f = shift;
		 $f->strand == +1 ? "blue" : "red";
               }
height       = 10 
title        = sub {
                 my $f = shift;
		 my $name = $f->name;
		 my $chr = $f->seq_id;
		 my $loc = $f->location->to_FTstring;
		 my ($desc) = $f->get_tag_values("Note");
		 my ($taxon) = $f->get_tag_values("Taxon");
	   	 my ($isPseudo) = $f->get_tag_values("IsPseudo");
		 my ($soTerm) = $f->get_tag_values("SOTerm");
	         $soTerm =~ s/\_/ /g;
	         $soTerm =~ s/\b(\w)/\U$1/g;
		 my @data;
		 push @data, [ 'Species:' => $taxon ];	
		 push @data, [ 'Name:'  => $name ];
		 push @data, [ 'Gene Type:' => ($isPseudo ? "Pseudogenic " : "") . $soTerm  ];
		 push @data, [ 'Description:' => $desc ];
		 # push @data, [ 'Location:'  => "$chr $loc" ];
		 hover("Syntenic Gene: $name", \@data);
	       }
link         = @siteWebAppUrl@/showRecord.do?name=GeneRecordClasses.GeneRecordClass&primary_key=$name
key          = Pb-Pf Syn Genes
citation     = Genes found within syntenic spans.


[SyntenyGenesChabaudi]
feature      = gene:syntenyChabaudi
glyph        = processed_transcript
description  = 1
label        = 1
font2color   = darkgrey
tkcolor      = lavender
bgcolor      = sub {
                 my $f = shift;
		 $f->strand == +1 ? "blue" : "red";
               }
height       = 10 
title        = sub {
                 my $f = shift;
		 my $name = $f->name;
		 my $chr = $f->seq_id;
		 my $loc = $f->location->to_FTstring;
		 my ($desc) = $f->get_tag_values("Note");
		 my ($taxon) = $f->get_tag_values("Taxon");
	   	 my ($isPseudo) = $f->get_tag_values("IsPseudo");
		 my ($soTerm) = $f->get_tag_values("SOTerm");
	         $soTerm =~ s/\_/ /g;
	         $soTerm =~ s/\b(\w)/\U$1/g;
		 my @data;
		 push @data, [ 'Species:' => $taxon ];	
		 push @data, [ 'Name:'  => $name ];
		 push @data, [ 'Gene Type:' => ($isPseudo ? "Pseudogenic " : "") . $soTerm  ];
		 push @data, [ 'Description:' => $desc ];
		 # push @data, [ 'Location:'  => "$chr $loc" ];
		 hover("Syntenic Gene: $name", \@data);
	       }
link         = @siteWebAppUrl@/showRecord.do?name=GeneRecordClasses.GeneRecordClass&primary_key=$name
key          = Pc-Pf Syn Genes
citation     = Genes found within syntenic spans.

[GeneDensity]
feature      = annotation:density
preset       = GeneDensity
glyph        = xyplot
graph_type   = boxes
bump density = 1
scale        = right
#scale       = both
bgcolor      = lightslategray
fgcolor      = bgcolor
height       = 60
min_score    = 0
label        = 0
key          = Gene Density
citation     = Density plot of annotated genes, in the details section for embedded use by gbrowse_img.

[BergmanVaidyaOligos]
feature      = match:BergmanVaidyaOligos
glyph        = segments
bgcolor      = darkgrey
height       = 6
title        = sub {
                 my $f = shift;
		 my $name = $f->name;
		 my $chr = $f->seq_id;
		 my $loc = $f->location->to_FTstring;
		 my ($desc) = $f->get_tag_values("Note");
		 my @data;
		 push @data, [ 'Name:'  => $name ];
		 push @data, [ 'Description:' => $desc ];
                 # push @data, [ 'Coordinates:' => $f->start . ' .. ' . $f->end ];
		 push @data, [ 'Location:'  => "$chr $loc" ];
		 hover("Glass Slide Oligo: $name", \@data);
	       }
description  = 1
label        = 1
link         = @siteWebAppUrl@/showRecord.do?name=ArrayElementRecordClasses.ArrayElementRecordClass&primary_key=$name
key          = P.y. GS oligos
citation     = Alignment of Bergman Vaidya glass slide oligos in P. yoelii