Skip to content
Snippets Groups Projects
Commit edea9d95 authored by Floreal Cabanettes's avatar Floreal Cabanettes
Browse files

Add export to TSV for summary

parent eb9acb2d
No related branches found
No related tags found
No related merge requests found
......@@ -2,7 +2,7 @@ if(!dgenies){throw"dgenies wasn't included!"}dgenies.result={};// GLOBAL VARIABL
dgenies.result.id_res=null;dgenies.result.init=function(id_res){dgenies.result.id_res=id_res;dgenies.result.add_to_list();d3.boxplot.init()};dgenies.result.add_to_list=function(){console.log("pass",dgenies.result.id_res);let cookies=$.cookie("results");cookies=cookies!==undefined?cookies.split("|"):[];console.log(cookies);if(cookies.indexOf(dgenies.result.id_res)===-1){console.log("oui");cookies.splice(0,0,dgenies.result.id_res);dgenies.save_cookies(cookies);dgenies.update_results(cookies)}};dgenies.result.remove_job_from_cookie=function(job){let cookies=$.cookie("results");cookies=cookies!==undefined?cookies.split("|"):[];let index=cookies.indexOf(job);let need_update=false;if(index>-1){need_update=true;cookies.splice(index,1)}$.cookie("results",cookies.join("|"),{path:"/"});if(need_update){dgenies.update_results(cookies)}};
if(!dgenies||!dgenies.result){throw"dgenies.result wasn't included!"}dgenies.result.controls={};dgenies.result.controls.init=function(){$("#sort-contigs").click(dgenies.result.controls.launch_sort_contigs);$("#hide-noise").click(dgenies.result.controls.launch_hide_noise);$("#summary").click(dgenies.result.controls.summary);$("#delete-job").click(dgenies.result.controls.delete_job);$("form#select-zone input.submit").click(dgenies.result.controls.select_zone);$("form#export select").change(dgenies.result.export.export)};dgenies.result.controls.summary=function(){dgenies.show_loading("Building...");window.setTimeout(()=>{dgenies.post(`/summary/${dgenies.result.id_res}`,{},function(data){dgenies.hide_loading();if(data["success"]){if(data["status"]==="done"){dgenies.result.summary.show(data["percents"])}else if(data["status"]==="waiting"){dgenies.result.controls.summary()}}else{dgenies.notify(data["message"]||"An error occurred! Please contact us to report the bug","danger")}})},0)};dgenies.result.controls.launch_sort_contigs=function(){d3.boxplot.zoom.reset_scale();window.setTimeout(()=>{dgenies.show_loading("Building...");window.setTimeout(()=>{dgenies.post(`/sort/${dgenies.result.id_res}`,{},function(data){if(data["success"]){dgenies.reset_loading_message();window.setTimeout(()=>{d3.boxplot.launch(data,true)},0)}else{dgenies.hide_loading();dgenies.notify(data["message"]||"An error occurred! Please contact us to report the bug","danger")}})},0)},0)};dgenies.result.controls.launch_reverse_contig=function(){if(d3.boxplot.query_selected!==null){d3.boxplot.zoom.reset_scale();window.setTimeout(()=>{dgenies.show_loading("Building...");window.setTimeout(()=>{dgenies.post(`/reverse-contig/${dgenies.result.id_res}`,{"contig":d3.boxplot.query_selected},function(data){if(data["success"]){dgenies.reset_loading_message();window.setTimeout(()=>{d3.boxplot.launch(data,true)},0)}else{dgenies.hide_loading();dgenies.notify(data["message"]||"An error occurred! Please contact us to report the bug","danger")}})},0)},0)}else{dgenies.notify("Error: no query selected. Please contact us to report the bug","danger")}};dgenies.result.controls.launch_hide_noise=function(){d3.boxplot.zoom.reset_scale();window.setTimeout(()=>{dgenies.show_loading("Building...");window.setTimeout(()=>{dgenies.post(`/freenoise/${dgenies.result.id_res}`,{noise:dgenies.noise?0:1},function(data){if(data["success"]){dgenies.noise=!dgenies.noise;dgenies.reset_loading_message();window.setTimeout(()=>{d3.boxplot.launch(data,true,true)},0)}else{dgenies.hide_loading();dgenies.notify(data["message"]||"An error occurred! Please contact us to report the bug","danger")}})},0)},0)};dgenies.result.controls.select_zone=function(){let contig_select=$("#select-contig").find(":selected");let target_select=$("#select-target").find(":selected");if(contig_select.val()!=="###NONE###"&&target_select.val()!=="###NONE###"){d3.boxplot.select_zone(null,null,target_select.val(),contig_select.val(),true)}else{dgenies.notify("Please select zones into zoom!","danger",2000)}};dgenies.result.controls.do_delete_job=function(){dgenies.post(`/delete/${dgenies.result.id_res}`,{},function(data){if(data["success"]){dgenies.notify("Your job has been deleted!","success",1500);window.setTimeout(()=>{dgenies.result.remove_job_from_cookie(dgenies.result.id_res);window.location="/"},1500)}else{dgenies.notify("error"in data?data["error"]:"An error has occurred. Please contact the support","danger")}})};dgenies.result.controls.delete_job=function(){let dialog=$("<div>").attr("id","dialog-confirm").attr("title","Delete job?");let icon=$("<span>").attr("class","ui-icon ui-icon-help").css("float","left").css("margin","12px 12px 20px 0");let body=$("<p>");body.append(icon);body.append("Confirm deletion of this job? This operation is definitive.");dialog.append(body);dialog.dialog({resizable:false,height:"auto",width:500,modal:true,buttons:{"Yes":function(){$(this).dialog("close");dgenies.result.controls.do_delete_job()},"No":function(){$(this).dialog("close")}}})};
if(!dgenies||!dgenies.result){throw"dgenies.result wasn't included!"}dgenies.result.export={};dgenies.result.export.get_svg=function(){return"<svg width='5000px' height='5000px' viewBox='0 0 100 100'>"+$("#draw-in").find(">svg").html()+"</svg>"};dgenies.result.export.save_file=function(blob,format){dgenies.hide_loading();saveAs(blob,`map_${d3.boxplot.name_y}_to_${d3.boxplot.name_x}.${format}`)};dgenies.result.export.export_png=function(){dgenies.show_loading("Building picture...",210);window.setTimeout(()=>{let export_div=$("div#export-pict");export_div.html("").append($("<canvas>"));canvg(export_div.find("canvas")[0],dgenies.result.export.get_svg());let canvas=export_div.find("canvas")[0];canvas.toBlob(function(blob){dgenies.result.export.save_file(blob,"png");export_div.html("")},"image/png")},0)};dgenies.result.export.export_svg=function(){dgenies.show_loading("Building picture...",180);window.setTimeout(()=>{let transform=d3.boxplot.container.attr("transform");let after=function(){let blob=new Blob([dgenies.result.export.get_svg()],{type:"image/svg+xml"});d3.boxplot.zoom.restore_scale(transform);dgenies.result.export.save_file(blob,"svg")};d3.boxplot.zoom.reset_scale(true,after)},0)};dgenies.result.export.export_paf=function(){let export_div=$("div#export-pict");export_div.html("");export_div.append($("<a>").attr("href",`/paf/${dgenies.result.id_res}`).attr("download",`map_${d3.boxplot.name_y}_to_${d3.boxplot.name_x}.paf`).attr("id","my-download").text("download"));dgenies.hide_loading();document.getElementById("my-download").click()};dgenies.result.export.dl_fasta=function(gzip=false){let export_div=$("div#export-pict");export_div.html("");export_div.append($("<a>").attr("href",`/fasta-query/${dgenies.result.id_res}`).attr("download",d3.boxplot.name_y+(gzip?".fasta.gz":".fasta")).attr("id","my-download").text("download"));dgenies.hide_loading();document.getElementById("my-download").click()};dgenies.result.export.export_fasta=function(compress=false){dgenies.show_loading("Building file...",180);dgenies.post("/get-fasta-query/"+dgenies.result.id_res,{gzip:compress},function(data,success){if(data["status"]===0){window.setTimeout(()=>{dgenies.result.export.export_fasta()},10000)}else if(data["status"]===2){dgenies.result.export.dl_fasta(data["gzip"])}else if(data["status"]===1){dgenies.hide_loading();dgenies.notify("We are building your Fasta file. You will receive by mail a link to download it soon!","info")}else{dgenies.hide_loading();dgenies.notify("An error has occurred. Please contact us to report the bug","danger")}})};dgenies.result.export.ask_export_fasta=function(){let dialog=$("<div>").attr("id","dialog-confirm").attr("title","Gzip?");let icon=$("<span>").attr("class","ui-icon ui-icon-help").css("float","left").css("margin","12px 12px 20px 0");let body=$("<p>");body.append(icon);body.append("Compression is recommanded on slow connections. Download Gzip file?");dialog.append(body);dialog.dialog({resizable:false,height:"auto",width:500,modal:true,buttons:{"Use default":function(){$(this).dialog("close");dgenies.result.export.export_fasta(false)},"Use Gzip":function(){$(this).dialog("close");dgenies.result.export.export_fasta(true)},Cancel:function(){$(this).dialog("close")}}})};dgenies.result.export.export_association_table=function(){let export_div=$("div#export-pict");export_div.html("");export_div.append($("<a>").attr("href",`/qt-assoc/${dgenies.result.id_res}`).attr("download",d3.boxplot.name_y+"_"+d3.boxplot.name_x+"_assoc.tsv").attr("id","my-download").text("download"));dgenies.hide_loading();document.getElementById("my-download").click()};dgenies.result.export.export_no_association_file=function(to){window.setTimeout(()=>{dgenies.show_loading("Building file...",180);let on=to==="query"?"target":"query";dgenies.post("/no-assoc/"+dgenies.result.id_res,{"to":to},function(data,success){dgenies.hide_loading();if(!data["empty"]){let blob=new Blob([data["file_content"]],{type:"text/plain"});saveAs(blob,`no_${to}_matches_${d3.boxplot.name_y}_to_${d3.boxplot.name_x}.txt`)}else{dgenies.notify(`No contigs in ${to} have None match with any ${on}!`,"success")}})},0)};dgenies.result.export.export_query_as_reference_fasta_webserver=function(){dgenies.post(`/build-query-as-reference/${dgenies.result.id_res}`,{},function(data,success){if(data["success"]){dgenies.notify("You will receive a mail soon with the link to download your Fasta file","success")}else{dgenies.notify(`An error has occurred. Please contact the support`,"danger")}})};dgenies.result.export.export_query_as_reference_fasta_standalone=function(){dgenies.show_loading("Building file...",180);window.setTimeout(()=>{dgenies.post(`/build-query-as-reference/${dgenies.result.id_res}`,{},function(data,success){if(data["success"]){let export_div=$("div#export-pict");export_div.html("");export_div.append($("<a>").attr("href",`/get-query-as-reference/${dgenies.result.id_res}`).attr("download",`as_reference_${d3.boxplot.name_y}.fasta`).attr("id","my-download").text("download"));document.getElementById("my-download").click();dgenies.hide_loading()}else{dgenies.notify(`An error has occurred. Please contact the support`,"danger")}})},0)};dgenies.result.export.export=function(){let select=$("form#export select");let selection=parseInt(select.val());window.setTimeout(()=>{if(selection>0){let async=false;if(selection===1){dgenies.result.export.export_svg();async=true}else if(selection===2){dgenies.result.export.export_png();async=true}else if(selection===3)dgenies.result.export.export_paf();else if(selection===4){dgenies.result.export.ask_export_fasta();async=true}else if(selection===5){dgenies.result.export.export_association_table()}else if(selection===6){dgenies.result.export.export_no_association_file("query");async=true}else if(selection===7){dgenies.result.export.export_no_association_file("target");async=true}else if(selection===8){if(dgenies.mode==="webserver"){dgenies.result.export.export_query_as_reference_fasta_webserver()}else{dgenies.result.export.export_query_as_reference_fasta_standalone();async=true}}else dgenies.notify("Not supported yet!","danger",2000);if(!async)dgenies.hide_loading();select.val("0")}},0)};
if(!dgenies||!dgenies.result){throw"dgenies.result wasn't included!"}dgenies.result.summary={};dgenies.result.summary.show=function(percents){console.log(percents);let svgcontainer=d3.select("#draw-stats").html("").append("svg:svg").attr("width","500px").attr("height","220px");let container=svgcontainer.append("svg:g");let percents_order=["-1","0","1","2","3"];let x=0;let percent_value=0;for(let i in percents_order){let percent=percents_order[i];let label="";switch(percent){case"-1":label="No match";break;case"0":label="< 25 %";break;case"1":label="< 50 %";break;case"2":label="< 75 %";break;case"3":label="> 75 %";break;}console.log(percent);x+=percent_value;percent_value=percent in percents?percents[percent]:0;container.append("rect").attr("x",x+"%").attr("y",0).attr("width",percent_value+"%").attr("height","50px").attr("stroke","none").attr("fill",d3.boxplot.color_idy[d3.boxplot.color_idy_theme][percent]);container.append("rect").attr("x",5).attr("y",70+i*30).attr("width","10px").attr("height","10px").attr("fill",d3.boxplot.color_idy[d3.boxplot.color_idy_theme][percent]).style("stroke","#000").style("stroke-width","1px");container.append("text").attr("x",30).attr("y",82+i*30).attr("font-family","sans-serif").attr("font-size","12pt").text(label+":");container.append("text").attr("x",110).attr("y",82+i*30).attr("font-family","sans-serif").attr("font-size","12pt").text(percent_value.toFixed(2)+" %")}container.append("rect").attr("x",0).attr("y",0).attr("width","100%").attr("height","50px").style("stroke","#000").style("fill","none").style("stroke-width","1px");$("#modal-stats").dialog({title:"Summary of identity",width:"550px",buttons:[{text:"Export PNG",click:dgenies.result.summary.export_png},{text:"Export SVG",click:dgenies.result.summary.export_svg},{text:"Close",click:function(){$(this).dialog("close")}}]})};dgenies.result.summary.get_svg=function(){return $("#draw-stats").html()};dgenies.result.summary.save_file=function(blob,format){saveAs(blob,`summary_${d3.boxplot.name_y}_to_${d3.boxplot.name_x}.${format}`)};dgenies.result.summary.export_svg=function(){let blob=new Blob([dgenies.result.summary.get_svg()],{type:"image/svg+xml"});dgenies.result.summary.save_file(blob,"svg")};dgenies.result.summary.export_png=function(){let export_div=$("div#export-pict");export_div.html("").append($("<canvas>"));canvg(export_div.find("canvas")[0],dgenies.result.summary.get_svg());let canvas=export_div.find("canvas")[0];canvas.toBlob(function(blob){dgenies.result.summary.save_file(blob,"png");export_div.html("")},"image/png")};
if(!dgenies||!dgenies.result){throw"dgenies.result wasn't included!"}dgenies.result.summary={};dgenies.result.summary.percents={};dgenies.result.summary.show=function(percents){dgenies.result.summary.percents=percents;let svgcontainer=d3.select("#draw-stats").html("").append("svg:svg").attr("width","500px").attr("height","220px");let container=svgcontainer.append("svg:g");let percents_order=["-1","0","1","2","3"];let x=0;let percent_value=0;for(let i in percents_order){let percent=percents_order[i];let label=dgenies.result.summary._get_label(percent);x+=percent_value;percent_value=percent in percents?percents[percent]:0;container.append("rect").attr("x",x+"%").attr("y",0).attr("width",percent_value+"%").attr("height","50px").attr("stroke","none").attr("fill",d3.boxplot.color_idy[d3.boxplot.color_idy_theme][percent]);container.append("rect").attr("x",5).attr("y",70+i*30).attr("width","10px").attr("height","10px").attr("fill",d3.boxplot.color_idy[d3.boxplot.color_idy_theme][percent]).style("stroke","#000").style("stroke-width","1px");container.append("text").attr("x",30).attr("y",82+i*30).attr("font-family","sans-serif").attr("font-size","12pt").text(label+":");container.append("text").attr("x",110).attr("y",82+i*30).attr("font-family","sans-serif").attr("font-size","12pt").text(percent_value.toFixed(2)+" %")}container.append("rect").attr("x",0).attr("y",0).attr("width","100%").attr("height","50px").style("stroke","#000").style("fill","none").style("stroke-width","1px");$("#modal-stats").dialog({title:"Summary of identity",width:"560px",buttons:[{text:"Export TSV",click:dgenies.result.summary.export_tsv},{text:"Export PNG",click:dgenies.result.summary.export_png},{text:"Export SVG",click:dgenies.result.summary.export_svg},{text:"Close",click:function(){$(this).dialog("close")},default:true}],open:function(){$(this).parents().find(".ui-dialog-buttonpane button")[3].focus()}})};dgenies.result.summary._get_label=function(percent_class){switch(percent_class){case"-1":return"No match";case"0":return"< 25 %";case"1":return"< 50 %";case"2":return"< 75 %";case"3":return"> 75 %";}};dgenies.result.summary.get_svg=function(){return $("#draw-stats").html()};dgenies.result.summary.save_file=function(blob,format){saveAs(blob,`summary_${d3.boxplot.name_y}_to_${d3.boxplot.name_x}.${format}`)};dgenies.result.summary.export_tsv=function(){let content="category\tpercent\n";for(let percent in dgenies.result.summary.percents){content+=`${dgenies.result.summary._get_label(percent)}\t${dgenies.result.summary.percents[percent]}\n`}dgenies.result.summary.save_file(new Blob([content],{type:"plain/text"}),"tsv")};dgenies.result.summary.export_svg=function(){let blob=new Blob([dgenies.result.summary.get_svg()],{type:"image/svg+xml"});dgenies.result.summary.save_file(blob,"svg")};dgenies.result.summary.export_png=function(){let export_div=$("div#export-pict");export_div.html("").append($("<canvas>"));canvg(export_div.find("canvas")[0],dgenies.result.summary.get_svg());let canvas=export_div.find("canvas")[0];canvas.toBlob(function(blob){dgenies.result.summary.save_file(blob,"png");export_div.html("")},"image/png")};
if(!d3){throw"d3 wasn't included!"}d3.boxplot={};//GLOBAL VARIABLES:
d3.boxplot.svgcontainer=null;d3.boxplot.container=null;d3.boxplot.svgsupercontainer=null;d3.boxplot.name_x=null;d3.boxplot.name_y=null;d3.boxplot.lines=null;d3.boxplot.x_len=null;d3.boxplot.y_len=null;d3.boxplot.x_zones=null;d3.boxplot.y_zones=null;d3.boxplot.zoom_enabled=true;d3.boxplot.all_disabled=false;d3.boxplot.min_idy=0;d3.boxplot.max_idy=0;d3.boxplot.zone_selected=false;d3.boxplot.query_selected=null;//For translations:
d3.boxplot.translate_start=null;d3.boxplot.posX=null;d3.boxplot.posY=null;d3.boxplot.old_translate=null;//Graphical parameters:
......
......@@ -2,9 +2,10 @@ if (!dgenies || !dgenies.result) {
throw "dgenies.result wasn't included!"
}
dgenies.result.summary = {};
dgenies.result.summary.percents = {};
dgenies.result.summary.show = function(percents) {
console.log(percents);
dgenies.result.summary.percents = percents;
let svgcontainer = d3.select("#draw-stats").html("").append("svg:svg")
.attr("width", "500px")
.attr("height", "220px");
......@@ -14,25 +15,7 @@ dgenies.result.summary.show = function(percents) {
let percent_value = 0;
for (let i in percents_order) {
let percent = percents_order[i];
let label="";
switch (percent) {
case "-1":
label = "No match";
break;
case "0":
label = "< 25 %";
break;
case "1":
label = "< 50 %";
break;
case "2":
label = "< 75 %";
break;
case "3":
label = "> 75 %";
break;
}
console.log(percent);
let label=dgenies.result.summary._get_label(percent);
x += percent_value;
percent_value = percent in percents ? percents[percent] : 0;
container.append("rect")
......@@ -75,8 +58,11 @@ dgenies.result.summary.show = function(percents) {
$("#modal-stats").dialog({
title: "Summary of identity",
width: "550px",
width: "560px",
buttons: [{
text: "Export TSV",
click: dgenies.result.summary.export_tsv
},{
text: "Export PNG",
click: dgenies.result.summary.export_png
},{
......@@ -86,11 +72,28 @@ dgenies.result.summary.show = function(percents) {
text: "Close",
click: function() {
$(this).dialog("close");
}
}]
},
default: true
}],
open: function() { $(this).parents().find(".ui-dialog-buttonpane button")[3].focus() }
})
};
dgenies.result.summary._get_label = function (percent_class) {
switch (percent_class) {
case "-1":
return "No match";
case "0":
return "< 25 %";
case "1":
return "< 50 %";
case "2":
return "< 75 %";
case "3":
return "> 75 %";
}
};
dgenies.result.summary.get_svg = function () {
return $("#draw-stats").html();
};
......@@ -99,6 +102,14 @@ dgenies.result.summary.save_file = function (blob, format) {
saveAs(blob, `summary_${d3.boxplot.name_y}_to_${d3.boxplot.name_x}.${format}`);
};
dgenies.result.summary.export_tsv = function () {
let content = "category\tpercent\n";
for (let percent in dgenies.result.summary.percents) {
content += `${dgenies.result.summary._get_label(percent)}\t${dgenies.result.summary.percents[percent]}\n`;
}
dgenies.result.summary.save_file(new Blob([content], {type: "plain/text"}), "tsv");
};
dgenies.result.summary.export_svg = function () {
let blob = new Blob([dgenies.result.summary.get_svg()], {type: "image/svg+xml"});
dgenies.result.summary.save_file(blob, "svg");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment