[GENERAL] header =
Genome Browser
>>PlasmoDB Home
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 =
# Various places where you can insert your own HTML -- see configuration docs html1 = html2 = html3 = html4 = html5 = html6 = 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(CDS); my $protein = qq(protein); 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 ||= "unavailable"; 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 megablast and the NCBI Splign 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 ||= "unavailable"; $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 dust 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 Tandem Repeats Finder 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.

Frame +1: cadetblue
Frame +2: blue
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.

Frame -1: darkred
Frame -2: red
Frame -3: crimson
[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 P. falciparum and P. vivax. [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 P. falciparum and P. yoelii. [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 P. falciparum and P. berghei. [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 P. falciparum and P. chabaudi. [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