#Includes special functions for tracks unique to the v5 browser. Functions that are used for tracks across multiple browsers should go in ../include/functions
B97coords = function (B97_coords) {
var coords_split = B97_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+"";
}
CML103coords = function (Cml103_coords) {
var coords_split = Cml103_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+"";
}
CML228coords = function (Cml228_coords) {
var coords_split = Cml228_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+"";
}
CML247coords = function (Cml247_coords) {
var coords_split = Cml247_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+"";
}
CML277coords = function (Cml277_coords) {
var coords_split = Cml277_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+"";
}
CML322coords = function (Cml322_coords) {
var coords_split = Cml322_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+"";
}
CML333coords = function (Cml333_coords) {
var coords_split = Cml333_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+"";
}
CML52coords = function (Cml52_coords) {
var coords_split = Cml52_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+"";
}
CML69coords = function (Cml69_coords) {
var coords_split = Cml69_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+"";
}
HP301coords = function (Hp301_coords) {
var coords_split = Hp301_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+"";
}
IL14Hcoords = function (Il14h_coords) {
var coords_split = Il14h_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+"";
}
Ki11coords = function (Ki11_coords) {
var coords_split = Ki11_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+"";
}
Ki3coords = function (Ki3_coords) {
var coords_split = Ki3_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+"";
}
Ky21coords = function (Ky21_coords) {
var coords_split = Ky21_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+"";
}
M162Wcoords = function (M162w_coords) {
var coords_split = M162w_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+"";
}
M37Wcoords = function (M37w_coords) {
var coords_split = M37w_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+"";
}
Mo18Wcoords = function (Mo18w_coords) {
var coords_split = Mo18w_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+"";
}
Ms71coords = function (Ms71_coords) {
var coords_split = Ms71_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+"";
}
NC350coords = function (Nc350_coords) {
var coords_split = Nc350_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+"";
}
NC358coords = function (Nc358_coords) {
var coords_split = Nc358_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+"";
}
Oh43coords = function (Oh43_coords) {
var coords_split = Oh43_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+"";
}
Oh7Bcoords = function (Oh7b_coords) {
var coords_split = Oh7b_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+"";
}
P39coords = function (P39_coords) {
var coords_split = P39_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+"";
}
Tx303coords = function (Tx303_coords) {
var coords_split = Tx303_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+"";
}
Tzi8coords = function (Tzi8_coords) {
var coords_split = Tzi8_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+"";
}
#EVA links for GWAS Chinese SNP track
evalinks = function(allele_rs, feature) {
if(allele_rs != "NA") {
return ""+allele_rs+"";
}
return allele_rs;
}
#NCBI colors
ncbicolors = function (feature) {
var colors = {
'BestRefSeq' : 'gold',
'Gnomon' : 'mediumseagreen',
'RefSeq' : 'firebrick',
'tRNAscan-SE' : 'royalblue',
'BestRefSeq%2CGnomon' : 'yellowgreen',
'cmsearch' : 'darkorchid',
'Curated Genomic' : 'silver'
};
var source = feature.get('source');
return colors[source];
}
#DBxref links for the NCBI annotation track
ncbidblinks = function(dbxref, feature) {
var html = "";
var dbxref_arr = [];
if (typeof dbxref == "string") {
dbxref_arr[0] = dbxref;
}
else {
dbxref_arr = dbxref;
}
if (dbxref_arr[0].includes("GeneID")) {
var id_parts = dbxref_arr[0].split(":");
html += id_parts[0] + ": "+id_parts[1]+"";
}
if (dbxref_arr.length > 1) {
if (dbxref_arr[1].includes("miRBase")) {
var id_parts = dbxref_arr[1].split(":");
html += id_parts[0] + ": "+id_parts[1]+"";
}
}
if (html == "") {
console.log("No dbxref links set");
html = dbxref;
}
return html;
}
#NCBI Gnomon gene model colors
gnomoncolors = function (feature) {
var colors = {
'Chainer' : 'crimson',
'Gnomon' : 'mediumseagreen',
'Chainer_GapFilled' : 'orange',
'FullAbInitio' : 'forestgreen',
'PartAbInitio' : 'teal',
};
var source = feature.get('source');
return colors[source];
}
#Links for dbxref in AcDs track
acdslinks = function(pangenome, feature) {
var dbxref = feature.get('dbxref');
var html = "";
if (typeof dbxref == "object") {
for (i=0, len=dbxref.length; i"+dbxref[i]+"
";
}
}
else {
var id = dbxref.split(":");
html += ""+dbxref+"
";
}
return html;
}
#Color code for single/double placement features in AcDs track
acdscolors = function(feature) {
var placement = feature.get('placement');
if (placement == "Single") {
return "seagreen";
}
return "royalblue";
}
#Links from Available From in Ac/Ds track
availfromlinks = function(name, feature) {
var avail = feature.get('Available_from');
var name = feature.get('Name');
var stock = feature.get('Stock');
if (avail == "Stock_Center") {
return "Order the stock containing "+name+" from the Stock Center.";
}
return "Contact Erik Vollbrecht to order the stock containing "+name+".";
}
#BonnMu Links
bonnmustocklinks = function(name, feature) {
var img = feature.get('img');
var name = feature.get('Name');
var stock = feature.get('Stock');
var img_html = "";
if (typeof img == "object") {
for (i=0, len=img.length; i 0) {
img_html += "
";
}
img_html += ""+stock[i]+"
";
}
}
}
else {
img_html = (img == "None") ? img : ""+stock+"
";
}
return img_html;
}
dbSNPv4links = function (v4_coords, feature) {
var coords_split = v4_coords.split(":");
var name = feature.get('name');
var chr = coords_split[0];
var pos = coords_split[1];
var padding = 50;
var start = eval(parseInt(pos) - padding);
var end = eval(parseInt(pos) + padding);
var loc = chr + ":" + start + ".." + end;
var highlight = name + "%40yellow";
return ""+v4_coords+"";
}
SNP50v3links = function (v3_coords, feature) {
var coords_split = v3_coords.split(":");
var name = feature.get('name');
var chr = coords_split[0];
var pos = coords_split[1];
var padding = 50;
var start = eval(parseInt(pos) - padding);
var end = eval(parseInt(pos) + padding);
var loc = chr + ":" + start + ".." + end;
var highlight = name + "%40yellow";
return ""+v3_coords+"";
}
#SNP50 track color code
snp50colors = function(feature) {
var placement = feature.get('locus_id');
if (placement == "null") {
return "black";
}
return "darkviolet";
}
#Links for Stocks in UniformMu track
ufmustocklinks = function(pangenome, feature) {
var stocks = feature.get('stock');
var stocks_html = "";
if (typeof stocks == "object") {
for (i=0, len=stocks.length; i"+stocks[i]+"
";
}
}
else {
stocks_html += ""+stocks+"";
}
return stocks_html;
}
#Links for other Mu positions in UniformMu track
ufmulinks = function(pangenome, feature) {
var mu = feature.get('mu_pos');
var mu_html = "";
if (typeof mu == "object") {
for (i=0, len=mu.length; i"+mu[i]+"
";
}
}
else {
mu_html += ""+mu+"";
}
return mu_html;
}
#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];
}
#alphafold colors
alphafoldcolors = function(feature) {
var score = feature.get('alphafold_score');
if (!score) {
score = feature.get('Esm_score');
}
if (score > 90) {
return "blue";
}
else if (score > 70) {
return "lightskyblue";
}
else if (score > 50) {
return "gold";
}
return "darkorange";
}
#Tu2022 ARF colors
tu2022colors = function(feature) {
var type = feature.get('Type');
var colors = {
'region_rep1' : '#8B0013',
'summit_rep1' : '#8B0013',
'region_rep2' : '#138B00',
'summit_rep2' : '#138B00'
};
return colors[type];
}
#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];
}
#Li 2022 SNP colors
li2022traitcolors = function (feature) {
var trait_colors = {
'anthesis-to-silking interval': 'mediumorchid',
'cob weight': '#DDB500',
'days to anthesis': 'mediumpurple',
'days to silking': 'mediumorchid',
'ear height': '#DDB500',
'ear length': '#DDB500',
'ear weight': '#DDB500',
'ear diameter': '#DDB500',
'grain yield per plant': 'peru',
'hundred kernel volume': 'goldenrod',
'hundred kernel weight': 'goldenrod',
'kernel ratio': 'goldenrod',
'kernel row number': 'goldenrod',
'kernel weight per ear': 'goldenrod',
'kernel number per row': 'goldenrod',
'kernel width': 'goldenrod',
'kernel length': 'goldenrod',
'plant height': 'darkgreen',
'reduced relative ear height': '#DDB500',
'tassel branch number': 'rebeccapurple',
'tassel length': 'rebeccapurple'
};
var name = feature.get('trait');
return trait_colors[name];
}
#Color code for TE-like methylation tracks
uniprotcolors = 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)";
}
#TF links for Transcription Factor annotation track
tflinks = function(name, feature) {
return ""+name+"";
}
#TF links for Transcription Factor annotation track
tffamilylinks = function(name, feature) {
return ""+name+"";
}
#TF links for Transcription Factor annotation track
tfclonelinks = function(name, feature) {
if (name === "N/A") {
return name;
}
return ""+name+"";
}
#Color code features in PeptideAtlas track
peptideatlascolors = function(feature) {
var ngenloc = feature.get('NGenLoc');
if (parseInt(ngenloc) > 1) {
return "indigo";
}
return "crimson";
}
#Links for PeptideAtlas
peptidelinks = function(pangenome, feature) {
var name = feature.get('Id').split("-");
return ""+feature.get('Id')+"";
}
#Links for PeptideAtlas
peptidegenelinks = function(pangenome, feature) {
var name = feature.get('Alias');
return ""+name+"_P001";
}
#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) {
console.log("TFgenelinks; name = " + name);
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);
console.log("TFgenelinks; genome_id = " + genome_id);
console.log("gene_arr length = " + gene_arr.length);
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;
}
#Colors for the reelgene tracks
reelgenecolors = function(feature) {
var score = parseFloat(feature.get('score'));
var type = feature.get('Type');
console.log("colorcode3 type: " + type + "; score: " + score);
if (type == "PhyloP") {
if (score < -1) {
return "darkorange";
}
if (score < 1) {
return "gold";
}
if (score < 3) {
return "lightskyblue";
}
if (score > 3) {
return "blue";
}
}
else {
if (score < 0.2) {
return "darkorange";
}
else if (score < 0.5) {
return "gold";
}
else if (score < 0.8) {
return "lightskyblue";
}
else {
return "blue";
}
}
}
reelgenedescription = function(feature) {
var score = parseFloat(feature.get('average'));
return "Avg. score: " + score.toFixed(3);
}
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);
}