#gene_center links for official gene model tracks
genelinks = function(name, feature) {
if(feature.get('type') == 'gene') {
return ""+feature.get('id')+"";
}
else if(feature.get('type') == 'teM') {
var nameArr = name.split("_");
return ""+nameArr[0]+"";
}
else if(feature.get('type') == 'mRNA') {
return name.replace("transcript:", "");
}
return name;
}
genelinks2 = function(name, feature) {
if(feature.get('type') == 'gene' || feature.get('type') == 'teM') {
return ""+name+"";
}
else if(feature.get('type') == 'mRNA') {
return name.replace("transcript:", "");
}
return name;
}
#gene_center links for official gene model tracks
genecolors = function(feature) {
var gene_colors = {
'Zm00001eb': 'goldenrod',
'Zm00018ab': '#4169E1',
'Zm00031ab': '#4169E1',
'Zm00033ab': '#4169E1',
'Zm00035ab': '#4169E1',
'Zm00039ab': '#4169E1',
'Zm00038ab': '#4169E1',
'Zm00021ab': '#32CD32',
'Zm00022ab': '#32CD32',
'Zm00023ab': '#32CD32',
'Zm00024ab': '#32CD32',
'Zm00025ab': '#32CD32',
'Zm00026ab': '#32CD32',
'Zm00019ab': '#32CD32',
'Zm00020ab': '#32CD32',
'Zm00030ab': '#32CD32',
'Zm00029ab': '#32CD32',
'Zm00036ab': '#32CD32',
'Zm00037ab': '#32CD32',
'Zm00042ab': '#32CD32',
'Zm00027ab': '#DA70D6',
'Zm00028ab': '#FF4500',
'Zm00040ab': '#FF4500',
'Zm00032ab': '#787878',
'Zm00034ab': '#787878',
'Zm00041ab': '#787878',
'Zd00001aa': 'saddlebrown',
'Zd00003aa': 'saddlebrown',
'Zh00001aa': 'peru',
'Zn00001aa': 'saddlebrown',
'Zv00001aa': 'peru',
'Zv00002aa': 'peru',
'Zx00002aa': 'peru',
'Zx00003aa': 'peru',
'Av00001aa': 'yellowgreen',
'Zm00106aa': '#32CD32',
'Zm00107aa': '#32CD32',
'Zm00108aa': '#32CD32',
'Zm00112aa': 'indigo',
'Zm00109aa': 'indigo',
'Zm00110aa': '#8800FF',
'Zm00111aa': '#8800FF'
};
var feat = feature.get('Id');
var name;
if (feat == null) {
return;
}
else {
name = feature.get('Id').substring(0,9);
}
return gene_colors[name];
}
#gene subparts, non_coding gff does not have CDS so set it as exon
genesubparts = function(feature) {
return "CDS";
}
mrnalabels = function(name, feature) {
if(feature.get('type') == 'mRNA') {
return name.replace("transcript:", "");
}
return name;
}
#displays table of QI (Quality Index) scores that comes with the official gene model GFFs
qitable = function(_qi) {
var qi_split = _qi.split("|");
var qi_table = [
"Length of the 5' UTR: ",
"% of splice sites confirmed by an EST/mRNA-seq alignment: ",
"% of exons that match an EST/mRNA-seq alignment: ",
"% of exons that overlap EST/mRNA-seq or protein-alignments: ",
"% of splice sites confirmed by ab initio gene prediction: ",
"% of exons overlaping an ab initio gene prediction: ",
"Number of exons in the mRNA: ",
"Length of the 3' UTR: ",
"Length of the protein sequence produced by the mRNA: "
];
var ret_html = "
";
var i, len;
for (i=0, len = qi_split.length; i < len; i++) {
if (i >= 1 && i <= 5) {
qi_split[i] = (qi_split[i] == -1) ? "N/A" : eval(parseFloat(qi_split[i]) * 100) + "%";
}
ret_html += "
"+qi_table[i]+"
"+qi_split[i]+"
";
}
ret_html += "
";
return ret_html;
}
#create v5 links for the non-B73 SNP Tracks
v5coords = function(B73_v5_coords) {
var coords_split = B73_v5_coords.split(":");
var chr = coords_split[0];
var pos_split = coords_split[1].split("_");
var start = pos_split[0];
var end = pos_split[1];
var padding = 5000;
var loc = chr + ":" + eval(parseInt(start) - padding) + ".." + eval(parseInt(end) + padding);
var highlight = chr + ":" + start + ".." + end;
return ""+highlight+"";
}
#Links for golden gate genetic_markers track
goldenlinks = function(pangenome, feature) {
var genomes = [
"B97", "CML103", "CML228", "CML247", "CML277", "CML322", "CML333", "CML52",
"CML69", "HP301", "IL14H", "Ki11", "Ki3", "Ky21", "M162W", "M37W", "Ms71",
"Mo18W", "NC350", "NC358", "Oh43", "Oh7B", "P39", "Tx303", "Tzi8"
];
var feature_name = feature.get('name');
var menu_html = "";
return "View " + feature_name + " on the " + menu_html + " browser. " + button_html;
}
#Links for pangenome markers track
panlinks = function(pangenome, feature) {
var genomes = [
"B73v5", "B97", "CML103", "CML228", "CML247", "CML277", "CML322", "CML333", "CML52",
"CML69", "HP301", "IL14H", "Ki11", "Ki3", "Ky21", "M162W", "M37W", "Ms71",
"Mo18W", "NC350", "NC358", "Oh43", "Oh7B", "P39", "Tx303", "Tzi8"
];
var menu_html = "";
var markers = feature.get('alias');
var marker_menu_html = "";
if (typeof markers == "object") {
marker_menu_html = "";
button_onclick += "'+document.getElementById('markers').value, '_blank');\"";
}
else {
marker_menu_html = markers;
button_onclick += markers + "', '_blank');\"";
}
var button_html = '?GO!!!';
return "View " + marker_menu_html + " on the " + menu_html + " browser " + button_html;
}
traitcolors = function (feature) {
var trait_colors = {
'100_Kernel_weight': '#DDB500',
'Anthesis-silking_interval': 'mediumorchid',
'Average_internode_length_(above_ear)': '#89BC21',
'Average_internode_length_(below_ear)': '#89BC21',
'Average_internode_length_(whole_plant)': '#89BC21',
'Boxcox-transformed_leaf_angle': 'coral',
'Chlorophyll_A': 'forestgreen',
'Chlorophyll_B': 'forestgreen',
'Cob_diameter': '#DDB500',
'Days_to_anthesis': 'mediumpurple',
'Days_to_silk': 'mediumorchid',
'Ear_height': '#DDB500',
'Ear_row_number': '#DDB500',
'Fructose': 'deepskyblue',
'Fumarate': 'blueviolet',
'Glucose': 'deepskyblue',
'Glutamate': 'blueviolet',
'Height_above_ear': '#DDB500',
'Height_per_day_(until_flowering)': 'teal',
'Leaf_length': 'darkgreen',
'Leaf_width': 'darkgreen',
'Malate': 'blueviolet',
'Nitrate': 'blueviolet',
'Nodes_above_ear': '#32BC3A',
'Nodes_per_plant': '#32BC3A',
'Nodes_to_ear': '#32BC3A',
'Northern_Leaf_Blight': 'orangered',
'PCA_of_metabolites:_PC1': 'mediumslateblue',
'PCA_of_metabolites:_PC2': 'mediumslateblue',
'Photoperiod_growing-degree_days_to_anthesis': 'mediumpurple',
'Photoperiod_Growing-degree_days_to_silk': 'mediumorchid',
'Plant_height': 'teal',
'Protein': '#4E8DFF',
'Ratio_of_ear_height_to_total_height': '#DDB500',
'Southern_leaf_blight': 'orangered',
'Stalk_strength': 'darksalmon',
'Starch': 'deepskyblue',
'Sucrose': 'deepskyblue',
'Tassel_branch_number': 'rebeccapurple',
'Tassel_length': 'rebeccapurple',
'Total_amino_acids': '#4E8DFF'
};
var name = feature.get('name');
return trait_colors[name];
}
chinatraitcolors = function (feature) {
var trait_colors = {
'axis' : 'yellowgreen',
'dried stalk' : 'yellowgreen',
'husk' : 'yellowgreen',
'shoot' : 'yellowgreen',
'stem' : 'yellowgreen',
'cob' : 'gold',
'ear' : 'gold',
'kernel' : 'goldenrod',
'seed' : 'goldenrod',
'seedling' : 'goldenrod',
'grain' : 'goldenrod',
'bract' : 'indigo',
'tassel' : 'indigo',
'silk' : 'indigo',
'flower' : 'darkorange',
'fruit' : 'darkorange',
'root' : 'saddlebrown',
'leaf' : 'green',
'plant' : 'green',
'NA' : 'gray'
};
var tissue = feature.get('tissue').toLowerCase();
return trait_colors[tissue];
}
#Links for core bin markers track
cbmlinks = function(pangenome, feature) {
var markers = feature.get('name');
var genomes = [
"B73v5", "B97", "CML103", "CML228", "CML247", "CML277", "CML322", "CML333", "CML52",
"CML69", "HP301", "IL14H", "Ki11", "Ki3", "Ky21", "M162W", "M37W", "Ms71",
"Mo18W", "NC350", "NC358", "Oh43", "Oh7B", "P39", "Tx303", "Tzi8"
];
var menu_html = "";
var marker_menu_html = markers;
var button_html = '?GO!!!';
return "View " + marker_menu_html + " on the " + menu_html + " browser " + button_html;
}
#Link RS IDs to EVA
evalinks = function(allele_rs, feature) {
if(allele_rs != "NA") {
return ""+allele_rs+"";
}
return allele_rs;
}
#Methylome UMR color intensity; formula for color intensity = 255 * (score / 25)
umrcolors = function (feature) {
var score = feature.get('percent_methyl');
if (score > 20) return "crimson";
if (score > 15) return "orangered";
if (score > 10) return "darkgoldenrod";
if (score > 5) return "forestgreen";
return "royalblue";
}
#Methylome UMR color intensity; formula for color intensity = 255 * (score / 25)
umrcolorsold = function (feature) {
var score = Math.round(255 * (Math.round(feature.get('percent_methyl')) / 25));
var min_transparency = 0.33;
var new_score = Math.round(feature.get('percent_methyl')) / 25;
new_score = (new_score < min_transparency) ? min_transparency : new_score;
var color = "#" + ("0" + score.toString(16)).substr(-2) + "FF00";
var new_color = "rgba(0,0,255,"+new_score+")";
return new_color;
}
#TE colors
tecolors = function (feature) {
var te_colors = {
'knob' : 'saddlebrown',
'CACTA_TIR_transposon' : 'orangered',
'Copia_LTR_retrotransposon' : 'seagreen',
'Gypsy_LTR_retrotransposon' : 'seagreen',
'helitron' : 'darkgoldenrod',
'hAT_TIR_transposon' : 'orangered',
'L1_LINE_retrotransposon' : 'royalblue',
'LINE_element' : 'royalblue',
'long_terminal_repeat' : 'gray',
'LTR_retrotransposon' : 'seagreen',
'Mutator_TIR_transposon' : 'orangered',
'PIF_Harbinger_TIR_transposon' : 'orangered',
'rDNA_intergenic_spacer_element' : 'crimson',
'repeat_region' : 'gray',
'RTE_LINE_retrotransposon' : 'royalblue',
'subtelomere' : 'darkpurple',
'target_site_duplication' : 'darkgray',
'Tc1_Mariner_TIR_transposon' : 'orangered'
};
var type = feature.get('type');
return te_colors[type];
}
gapcolors = function (feature) {
var gap_colors = {
'sequencing_gap': '#CC1121',
'100N': '#44AA21',
'13N': '#6611FF'
};
var gap_type = feature.get('gap_type');
return gap_colors[gap_type];
}
knobcolors = function (feature) {
var knob_colors = {
'AF013103.1': 'gray',
'cenH3': 'orange',
'CL569186.1': 'silver',
'knob180': 'saddlebrown',
'TR-1': '#099966'
};
var feature_type = feature.get('repeat_type');
return knob_colors[feature_type];
}
svcolors = function (feature) {
var sv_colors = {
'DUP': 'gray',
'DEL': 'firebrick',
'INS': 'forestgreen',
'CENT': 'orange',
'INV': 'blueviolet',
'KNOB180': 'saddlebrown',
'TR1': '#099966'
};
var feature_type = feature.get('feature_type');
return sv_colors[feature_type];
}
#Dooner Ac/Ds color-code
doonercolors = function(feature) {
var feature_type = "";
var num_hits = feature.get('num_hits');
var hit_type = feature.get('type');
feature_type = (hit_type[1] == "perfect" || hit_type[1] == "strong") ? num_hits+"_"+hit_type[1] : num_hits;
var colors = {
'multi' : 'crimson',
'single_strong' : 'darkgoldenrod',
'single_perfect' : 'forestgreen'
};
return colors[feature_type];
}
#Link GO
golinks = function(go_term, feature) {
var ret = "";
if (typeof go_term == "object") {
var i;
for (i=0;i"+go_term[i]+" ";
}
}
else {
ret = ""+go_term+"";
}
return ret;
}
#GO Term descriptions
godescriptions = function(go_descriptions, feature) {
var ret = "";
var go_term = feature.get('go_id');
if (typeof go_descriptions == "object") {
var i;
for (i=0;i"+go_term[i]+": " + go_descriptions[i] + " ";
}
}
else {
ret = ""+go_term+"" + go_descriptions;
}
return ret;
}
#Uniprot links
uniprotlinks = function(uniprot, feature) {
var ret = "";
if (uniprot.includes(";")) {
uniprot = uniprot.split("; ");
}
if (typeof uniprot == "object") {
var i;
for (i=0;i"+uniprot[i]+" ";
}
}
else {
ret = ""+uniprot+"";
}
return ret;
}
#colors for uniprot tracks
uniprotcolors = function(feature) {
var identity = parseFloat(feature.get('Identity'));
if (identity >= 0.75) {
return "blue";
}
else if (identity < 0.75 && identity >= 0.50) {
return "lightskyblue";
}
else if (identity < 0.50 && identity >= 0.25) {
return "gold";
}
else {
return "darkorange";
}
}
#Uniprot names
uniprotnames = function(name, feature) {
var gene_id = feature.get('gene_id');
var uniprot_desc = feature.get('uniprot_desc');
var name = feature.get('name');
var desc = (gene_id == "NA") ? "("+uniprot_desc+")" : "("+gene_id+", "+uniprot_desc+")";
return ""+name+" " + desc;
}
#Hyperlink GO terms in text
LinkGO = function(text, feature) {
const regex = /(GO:[0-9]*)/;
if (typeof(text) == "string") {
if (!text.includes("href")) {
text = text.replace(regex, "$1");
}
}
else {
if (!text[0].includes("href")) {
for (var i=0; i$1");
}
}
}
return text;
}
#Promoter colors
promotercolors = function(feature) {
var type = feature.get('Type');
var colors = {
'promoter50' : 'crimson',
'promoter100' : 'darkorange',
'promoter250' : 'gold',
'promoter500' : 'seagreen',
'promoter1000' : 'royalblue',
'nucleotide_motif' : 'indigo'
};
return colors[type];
}
#Color code for TE-like methylation tracks
gent2022methylcolors = function(feature) {
var ratio = parseFloat(feature.get('Chg_methylation_ratio'));
var blue, red = 0;
const constant = 122;
var min = 0.4;
var max = 0.9;
var ratio_normalized = (ratio - min) * (ratio + max);
if (ratio_normalized < 0.5) {
blue = 255 - (Math.abs(ratio_normalized) * 255);
blue = (blue > 255) ? 255 : blue;
red = 255 - blue;
}
else {
red = Math.abs(ratio_normalized) * 255;
red = (red > 255) ? 255 : red;
blue = 255 - red;
}
return "rgb("+red+", 0, "+blue+")";
}
#Color code for TE-like methylation tracks
uniprotcolors_old = function(feature) {
var identity = parseFloat(feature.get('Identity'));
var green, red = 0;
const MAX_COLOR = 235;
if (identity >= 0.75) {
green = MAX_COLOR;
red = MAX_COLOR * (1 - identity) * 2;
}
else if (identity < 0.75 && identity >= 0.50) {
green = MAX_COLOR;
red = MAX_COLOR * (1 - identity) * 2;
}
else if (identity < 0.50 && identity >= 0.25) {
red = MAX_COLOR;
green = MAX_COLOR * (identity * 2);
}
else {
red = MAX_COLOR;
green = MAX_COLOR * (identity * 2);
}
return "rgb("+red+", "+green+", 0)";
}
#Sirevirus colors
sireviruscolors = function(feature) {
var stars = feature.get('Type');
var colors = {
'D12mer' : 'crimson',
'D8mer' : 'darkorange',
'envelope-like' : 'saddlebrown',
'Intergrase_core_domain' : 'indigo',
'long_terminal_repeat' : 'gray',
'P12mer' : 'royalblue',
'P8mer' : 'forestgreen',
'RT_core_domain' : 'violet',
'Sirevirus' : 'goldenrod'
};
return colors[stars];
}
#gene_center links for official gene model tracks
liftoffcolors = function(feature) {
var gene_colors = {
'Zm00001e': 'goldenrod',
'Zm00018a': '#4169E1',
'Zm00031a': '#4169E1',
'Zm00033a': '#4169E1',
'Zm00035a': '#4169E1',
'Zm00039a': '#4169E1',
'Zm00038a': '#4169E1',
'Zm00021a': '#32CD32',
'Zm00022a': '#32CD32',
'Zm00023a': '#32CD32',
'Zm00024a': '#32CD32',
'Zm00025a': '#32CD32',
'Zm00026a': '#32CD32',
'Zm00019a': '#32CD32',
'Zm00020a': '#32CD32',
'Zm00030a': '#32CD32',
'Zm00029a': '#32CD32',
'Zm00036a': '#32CD32',
'Zm00037a': '#32CD32',
'Zm00042a': '#32CD32',
'Zm00027a': '#DA70D6',
'Zm00028a': '#FF4500',
'Zm00040a': '#FF4500',
'Zm00032a': '#787878',
'Zm00034a': '#787878',
'Zm00041a': '#787878',
'Zd00001a': 'saddlebrown',
'Zd00003a': 'saddlebrown',
'Zh00001a': 'peru',
'Zn00001a': 'saddlebrown',
'Zv00001a': 'peru',
'Zv00002a': 'peru',
'Zx00002a': 'peru',
'Zx00003a': 'peru',
'Av00001a': 'yellowgreen',
'Zm00067a': 'orchid',
'Zm00106a': '#32CD32',
'Zm00107a': '#32CD32',
'Zm00108a': '#32CD32',
'Zm00112a': 'indigo',
'Zm00109a': 'indigo',
'Zm00111a': '#8800FF',
'Zm00110a': '#8800FF'
};
var type = feature.get('Type');
var parent = feature.parent();
var synteny_status = parent.get('synteny_status');
var name;
if (synteny_status == null && type != "mRNA") {
synteny_status = parent.parent().get('synteny_status');
name = parent.parent().get('Id').substring(0,8);
}
else {
name = feature.get('Id').substring(0,8);
}
if (synteny_status == "putatively_nonsyntenic") {
return "black";
}
return gene_colors[name];
}
#Links for TF Grotewold2024 track
TFNamelinks = function(name, feature) {
if(name != "N/A") {
return ""+name+"";
}
return name;
}
#Links for TF Grotewold2024 track
TFClonelinks = function(name, feature) {
if(name != "N/A") {
return ""+name+"";
}
return name;
}
#Links for TF Grotewold2024 track
TFFamilylinks = function(name, feature) {
if(name != "N/A") {
return ""+name+"";
}
return name;
}
#Links for TF Grotewold2024 track
TFgenelinks = function(name, feature) {
var ret_string = "";
var gene_arr = new Array();
if (typeof(name) === 'string') {
gene_arr[0] = name;
}
else {
gene_arr = name;
}
var genome_id = gene_arr[0].substring(0,9);
for (let i=0; i 0) {
ret_string += ", ";
}
switch(genome_id) {
case "Zm00001eb":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00018ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00019ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00020ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00021ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00022ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00023ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00024ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00025ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00026ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00027ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00028ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00029ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00030ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00031ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00032ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00033ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00034ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00035ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00036ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00037ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00038ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00039ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00040ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00041ab":
ret_string += ""+gene_arr[i]+"";
break;
case "Zm00042ab":
ret_string += ""+gene_arr[i]+"";
break;
default:
ret_string += gene_arr[i];
break;
}
}
return ret_string;
}
repcolors = function(feature) {
var name = feature.get('Name');
if (name.includes("Rep1")) {
return "royalblue";
}
return "crimson";
}
peakheight = function(feature) {
var sig_val = feature.get('Signalvalue');
var min_height = 1;
var sig_val_rounded = Math.round(sig_val * 10) / 10;
var sig_val_weight = 10;
return min_height + (sig_val_rounded * sig_val_weight);
}