|
function ROC_plot(b,e){d3.json(e,function(c){function a(a,b,c){E=1E-4;return a.cases/c*(b/(a.controls+E))}function d(b,c,d){var f=[],e=[],k=[],g;for(g in b)f.push(a(b[g],c,d));for(g in f)e.push(f[g]);e.sort(function(a,b){return b-a});for(g in e)id=f.indexOf(e[g]),k.push(b[id]),f[id]="s"+e[g];return k}function e(a,b,c){var d=[],f=0,k=0,g;for(g in a)k+=a[g].controls,f+=a[g].cases,d.push({FPR:k/b,TPR:f/c});return d}function f(a){str="M "+k(0)+" "+m(0)+" L ";for(var b in a)str=str+k(a[b].FPR)+" "+m(a[b].TPR)+ |
|
" L ";return str.slice(0,-3)}c=c.cont_table;unva_data=e(d(c[b].unv1,c[b].total.controls,c[b].total.cases),c[b].total.controls,c[b].total.cases);unvb_data=e(d(c[b].unv2,c[b].total.controls,c[b].total.cases),c[b].total.controls,c[b].total.cases);biv_data=e(function(b,c,d){var f=[],e=[],k=[],g=[],h;for(h in[0,1,2])for(var p in[0,1,2])f.push(b[h][p]),e.push(a(b[h][p],c,d));for(h in e)k.push(e[h]);k.sort(function(a,b){return b-a});for(h in k)id=e.indexOf(k[h]),g.push(f[id]),e[id]="s"+k[h];return g}(c[b].biv, |
|
c[b].total.controls,c[b].total.cases),c[b].total.controls,c[b].total.cases);c=[d3.max(unva_data,function(a){return a.FPR}),d3.max(unvb_data,function(a){return a.FPR}),d3.max(biv_data,function(a){return a.FPR})];var g=[d3.max(unva_data,function(a){return a.TPR}),d3.max(unvb_data,function(a){return a.TPR}),d3.max(biv_data,function(a){return a.TPR})],k=d3.scale.linear().domain([0,d3.max(c,function(a){return a})]).range([0,400]),m=d3.scale.linear().domain([0,d3.max(g,function(a){return a})]).range([400, |
|
0]);c=d3.svg.axis().scale(k).orient("bottom").ticks(5);var g=d3.svg.axis().scale(m).orient("left").ticks(5),n=d3.svg.axis().scale(k).orient("top").ticks(5),q=d3.svg.axis().scale(m).orient("right").ticks(5),p=d3.select("#rp").append("svg").attr("width",500).attr("height",500).append("g").attr("transform","translate(65,35)");p.selectAll("line").data([1]).enter().append("line").attr("class","linechrom").attr("x1",k(0)).attr("y1",m(0)).attr("x2",k(1)).attr("y2",m(1)).attr("stroke-width",1).attr("stroke-dasharray", |
|
5).style("stroke","black").style("opacity",0.2);p.append("svg:path").attr("d",f(biv_data)).style("stroke-width",2).style("stroke","#ee1500").style("fill","none");p.append("svg:path").attr("d",f(unva_data)).style("stroke-width",2).style("stroke","#0d1dee").style("fill","none");p.append("svg:path").attr("d",f(unvb_data)).style("stroke-width",2).style("stroke","#00d70b").style("fill","none");p.selectAll("path3").data(biv_data).enter().append("svg:path").style("fill","#ee1500").attr("transform",function(a){return"translate("+ |
|
k(a.FPR)+","+m(a.TPR)+")"}).attr("d",d3.svg.symbol().type("cross").size("30"));p.selectAll("path2").data(unva_data).enter().append("svg:path").style("fill","#0d1dee").attr("transform",function(a){return"translate("+k(a.FPR)+","+m(a.TPR)+")"}).attr("d",d3.svg.symbol().type("square").size("30"));p.selectAll("path1").data(unvb_data).enter().append("svg:path").style("fill","#00d70b").attr("transform",function(a){return"translate("+k(a.FPR)+","+m(a.TPR)+")"}).attr("d",d3.svg.symbol().type("triangle-up").size("30")); |
|
p.selectAll("path1l").data([{FPR:0.05,TPR:0.95}]).enter().append("svg:path").style("fill","#0d1dee").attr("transform",function(a){return"translate("+k(a.FPR)+","+m(a.TPR)+")"}).attr("d",d3.svg.symbol().type("square").size("30"));p.selectAll("path2l").data([{FPR:0.05,TPR:0.9}]).enter().append("svg:path").style("fill","#00d70b").attr("transform",function(a){return"translate("+k(a.FPR)+","+m(a.TPR)+")"}).attr("d",d3.svg.symbol().type("triangle-up").size("30"));p.selectAll("path3l").data([{FPR:0.05,TPR:0.85}]).enter().append("svg:path").style("fill", |
|
"#ee1500").attr("transform",function(a){return"translate("+k(a.FPR)+","+m(a.TPR)+")"}).attr("d",d3.svg.symbol().type("cross").size("30"));p.selectAll("text").data([{FPR:0.0575,TPR:0.94},{FPR:0.0575,TPR:0.89},{FPR:0.0575,TPR:0.84}]).enter().append("text").text(function(a,b){if(0==b)return"SNPa (3 dots)";if(1==b)return"SNPb (3 dots)";if(2==b)return"SNPaSNPb (9 dots)"}).attr("x",function(a){return k(a.FPR)}).attr("y",function(a){return m(a.TPR)}).attr("font-family","sans-serif").attr("font-size","11px").attr("fill", |
|
function(a,b){if(0==b)return"#0d1dee";if(1==b)return"#00d70b";if(2==b)return"#ee1500"});p.append("g").attr("class","axis").attr("transform","translate(0,400)").call(c).append("text").attr("class","label").attr("x",200).attr("y",30).style("text-anchor","end").text("FPR");p.append("g").attr("class","axis").attr("transform","translate(400","0)").call(n);p.append("g").attr("class","axis").call(g).append("text").attr("class","label").attr("transform","rotate(-90)").attr("x",-100).attr("y",-30).style("text-anchor", |
|
"end").text("TPR");p.append("g").attr("class","axis").attr("transform","translate(400,0)").call(q)})};var highlighting_links=[]; |
|
function show_snp_pairs_list(b,e,c,a,d){d3.json(b,function(b){var f=[],f=a?zoom_links:b.links;b=!1;b=highlighting_links.some(function(a){return a==d});highlighting_links[d]=b?void 0:d;d3.select("#pairs").selectAll("p").data(f.sort(function(a,b){return b[e]-a[e]})).enter().append("p").attr("id",function(a){return"SNPpair"+a.ct_id}).text(function(a){return showInteract(a.ct_id)}).style("background-color",function(a,b){return c?highlighting_links.some(function(b){return b===a.ct_id})?"red":"white":"white"}).on("mousedown", |
|
function(a,b){d3.select("#table_snps").selectAll("table").remove();create_table_snps(f[b]);d3.select("#rp").selectAll("svg").remove();ROC_plot(f[b].ct_id,file_json);d3.select("#contp").selectAll("svg").remove();cont_plot(f[b].ct_id,file_json)})});check_file_name=b};function cont_plot(b,e){d3.format(".0%");var c=d3.scale.ordinal().rangeRoundBands([0,740],0.3);d3.svg.axis().scale(c).orient("bottom");var a=d3.select("#contp").append("svg").attr("width",800).attr("height",500).append("g").attr("transform","translate(40,20)");d3.json(e,function(d){function e(b,d,k,h,n,q,p,s,r){var t=d3.scale.linear().domain([0,1]).range([h,n]);a.selectAll("rect"+b).data([0]).enter().append("rect").attr("x",c(d)-5).attr("y",q).attr("width",150).attr("height",p).attr("fill",function(a){if(s> |
|
r)return"#4ed05f";if(s<r)return"#d06057";if(s==r)return"white"}).attr("stroke","black").attr("stroke-width",1);a.selectAll(".bar"+b).data([{letter:d,frequency:s},{letter:k,frequency:r}]).enter().append("rect").attr("class","bar").attr("x",function(a){return c(a.letter)+5}).attr("width",c.rangeBand()).attr("y",function(a){return t(a.frequency)}).attr("fill","steelblue").attr("height",function(a){return h-t(a.frequency)});a.selectAll(".text_ct").data([{letter:d,frequency:s},{letter:k,frequency:r}]).enter().append("text").attr("class", |
|
"text_b").text(function(a){return Math.round(100*a.frequency)+"%"}).attr("x",function(a){return c(a.letter)+15}).attr("y",function(a){return t(a.frequency)}).attr("font-family","sans-serif").attr("font-size","11px").attr("fill","black")}d=d.cont_table[b];c.domain([1,2,3,4,5,6,7,8,9,10]);e(1,1,2,112.5,0,-10,122.5,d.unv1[0].controls/d.total.controls,d.unv1[0].cases/d.total.cases);e(2,4,5,112.5,0,-10,122.5,d.biv[0][0].controls/d.total.controls,d.biv[0][0].cases/d.total.cases);e(3,6,7,112.5,0,-10,122.5, |
|
d.biv[0][1].controls/d.total.controls,d.biv[0][1].cases/d.total.cases);e(4,8,9,112.5,0,-10,122.5,d.biv[0][2].controls/d.total.controls,d.biv[0][2].cases/d.total.cases);e(5,1,2,225,112.5,112.5,112.5,d.unv1[1].controls/d.total.controls,d.unv1[1].cases/d.total.cases);e(6,4,5,225,112.5,112.5,112.5,d.biv[1][0].controls/d.total.controls,d.biv[1][0].cases/d.total.cases);e(7,6,7,225,112.5,112.5,112.5,d.biv[1][1].controls/d.total.controls,d.biv[1][1].cases/d.total.cases);e(8,8,9,225,112.5,112.5,112.5,d.biv[1][2].controls/ |
|
d.total.controls,d.biv[1][2].cases/d.total.cases);e(9,1,2,337.5,225,225,112.5,d.unv1[2].controls/d.total.controls,d.unv1[2].cases/d.total.cases);e(10,4,5,337.5,225,225,112.5,d.biv[2][0].controls/d.total.controls,d.biv[2][0].cases/d.total.cases);e(11,6,7,337.5,225,225,112.5,d.biv[2][1].controls/d.total.controls,d.biv[2][1].cases/d.total.cases);e(12,8,9,337.5,225,225,112.5,d.biv[2][2].controls/d.total.controls,d.biv[2][2].cases/d.total.cases);e(13,4,5,480,367.5,367.5,112.5,d.unv2[0].controls/d.total.controls, |
|
d.unv2[0].cases/d.total.cases);e(14,6,7,480,367.5,367.5,112.5,d.unv2[1].controls/d.total.controls,d.unv2[1].cases/d.total.cases);e(15,8,9,480,367.5,367.5,112.5,d.unv2[2].controls/d.total.controls,d.unv2[2].cases/d.total.cases)})};function histogram_degree_SNPs(b,e){var c=[],a=[],d=[];d3.json(b,function(b){b.links.forEach(function(a){0===e?d.push(a):a.probe_group===e&&d.push(a)});b.nodes.forEach(function(b){0===e?(a.push(b),c.push(b)):(a.push(b),b.probe_group===e&&c.push(b))});var f=0==e?10<c.length?34.1796875*a.length-50-50:241.796875:10<c.length?34.1796875*c.length-50-50:241.796875,g=d3.scale.ordinal().rangeRoundBands([0,f],0.5),k=d3.scale.linear().range([0,280]);b=d3.svg.axis().scale(g).orient("left");var m=d3.svg.axis().scale(k).orient("top"), |
|
f=d3.select("#hds_matrix").append("svg").attr("width",700).attr("height",f+50+50).append("g").attr("transform","translate(400,50)");g.domain(c.map(function(b,c){return"id:"+a.indexOf(b)+" chr"+b.chrom+":"+b.bp_position+" "+b.rs+" probe_group:"+b.probe_group}));k.domain([0,d3.max(c,function(a){return a.degree})]);f.append("g").attr("class","x axis").call(b);f.selectAll(".x text").style("font-size","14px").attr("transform",function(a){return"translate("+-0.5*this.getBBox().height+","+0*this.getBBox().height+ |
|
")rotate(0)"}).on("click",function(a,b){var d=prompt("\n1) ClinVar\n2) dbSNP\n3) Ensembl\n4) PheGenI\n5) OMIM\n6) openSNP\n7) SNPedia\n8) UCSC");null!=d&&("8"==d?html="http://genome.ucsc.edu/cgi-bin/hgTracks?org=human&db=hg19&position=chr"+c[b].chrom+":"+(c[b].bp_position-1E3)+"-"+(c[b].bp_position+1E3):"6"==d?html="http://opensnp.org/snps/"+c[b].rs:"2"==d?html="http://www.ncbi.nlm.nih.gov/SNP/snp_ref.cgi?rs="+c[b].rs.substring(2):"4"==d?html="http://www.ncbi.nlm.nih.gov/gap/phegeni?tab=2&rs="+c[b].rs.substring(2): |
|
"3"==d?html="http://www.ensembl.org/Homo_sapiens/Variation/Summary?r="+c[b].chrom+":"+(c[b].bp_position-1E3)+"-"+(c[b].bp_position+1E3)+";source=dbSNP;v=rs"+c[b].rs.substring(2)+";vdb=variation":"7"==d?html="http://www.snpedia.com/index.php/Rs"+c[b].rs.substring(2):"5"==d?html="http://omim.org/search?index=entry&search=rs"+c[b].rs.substring(2):"1"==d&&(html="http://www.ncbi.nlm.nih.gov/clinvar?term=rs"+c[b].rs.substring(2)),window.open(html))});f.append("g").attr("class","y axis").attr("transform", |
|
"translate(0,0)").call(m).append("text").attr("transform","rotate(0)").attr("x",140).attr("y",-25).style("font-size","15px").style("text-anchor","end").text("Degree");var n=f.selectAll(".bar").data(c).enter().append("rect").attr("class","ds bar").attr("y",function(a){return g("chr"+a.chrom+":"+a.bp_position)}).attr("height",g.rangeBand()).attr("x",0).attr("width",function(a){return k(a.degree)}).on("mousedown",function(b,f){n.style("fill","steelblue");l=[];list_idx_in_links=[];list_idx_in_links2= |
|
[];for(var e in d)if("chr"+a[d[e].source].chrom+":"+a[d[e].source].bp_position==="chr"+c[f].chrom+":"+c[f].bp_position||"chr"+a[d[e].target].chrom+":"+a[d[e].target].bp_position==="chr"+c[f].chrom+":"+c[f].bp_position)l.push("chr"+a[d[e].source].chrom+":"+a[d[e].source].bp_position),l.push("chr"+a[d[e].target].chrom+":"+a[d[e].target].bp_position),list_idx_in_links.push(d[e].source+"-"+d[e].target),list_idx_in_links2.push(d[e]);n.filter(function(a){if(include_in_arr(l,"chr"+a.chrom+":"+a.bp_position))return a}).transition().style("fill", |
|
"red");n.filter(function(a){if("chr"+a.chrom+":"+a.bp_position==="chr"+c[f].chrom+":"+c[f].bp_position)return a}).transition().style("fill","#32ee00");if("p_cir"==plot_chosen||"p_arc"==plot_chosen)d3.select("#chart").selectAll("g circle").transition().style("opacity",0),d3.select("#chart").selectAll("g circle").filter(function(a){if(include_in_arr(l,"chr"+a.chrom+":"+a.bp_position))return a}).transition().style("opacity",1),d3.select("#chart").selectAll(".link").transition().style("opacity",0),d3.select("#chart").selectAll(".link").filter(function(a, |
|
b){if(include_in_arr(list_idx_in_links,a.source+"-"+a.target))return a}).transition().style("opacity",0.3)});f.selectAll(".bar").data(c).append("title").text(function(a){return"chr"+a.chrom+":"+a.bp_position+" ; "+a.degree})})};function histogram_edges_subgraphId(b,e){var c=[],a=[];d3.json(b,function(b){function h(a,b){var c={};c.n_probe_group=a;c.n_edgs=b;return c}e?zoom_links.forEach(function(a){c.push(a.probe_group)}):b.links.forEach(function(a){c.push(a.probe_group)});c.sort(function(a,b){return a>b?1:0});(function(){for(var b=d3.max(c,function(a){return a}),d=d3.min(c,function(a){return a});d<b;)d=c.lastIndexOf(d),d=c.splice(0,d+1),a.push(d),d=d3.min(c,function(a){return a});a.push(c)})();var f=[];for(b=0;b<a.length;b++)f.push(h(a[b][0], |
|
a[b].length));var g=10<d3.max(f,function(a){return a.n_probe_group})?34.1796875*d3.max(f,function(a){return a.n_probe_group})-50-50:241.796875,k=d3.scale.ordinal().rangeRoundBands([0,g],0.5),m=d3.scale.linear().range([0,530]);b=d3.svg.axis().scale(k).orient("left");var n=d3.svg.axis().scale(m).orient("top"),g=d3.select("#hesid").append("svg").attr("width",700).attr("height",g+50+50).append("g").attr("transform","translate(150,50)");k.domain(f.map(function(a){return"probe_group "+a.n_probe_group})); |
|
m.domain([0,d3.max(f,function(a){return a.n_edgs})]);g.append("g").attr("class","x axis").call(b);g.selectAll(".x text").style("font-size","14px");g.append("g").attr("class","y axis").attr("transform","translate(0,0)").call(n).append("text").attr("transform","rotate(0)").attr("x",265).attr("y",-25).style("font-size","14px").style("text-anchor","end").text("N\u00ba Edges");g.selectAll(".bar").data(f).enter().append("rect").attr("class","es bar").attr("x",0).attr("width",function(a){return m(a.n_edgs)}).attr("y", |
|
function(a){return k(a.n_probe_group)}).attr("height",k.rangeBand()).attr("fill",function(a){return graphColor(a.n_probe_group)}).attr("fill-opacity",0.5).style("font-size","14px").on("mousedown",function(a,b){d3.select("#hc").select("svg").remove();d3.select("#hds_matrix").select("svg").remove();sid=f[b].n_probe_group;histogram_degree_SNPs(file_json,sid);string_html='{"directed": false, "graph": [], "nodes": [';json_nodes_selected(file_json,sid);json_links_selected(file_json,sid);d3.select("#chart").selectAll("g circle").transition().style("opacity", |
|
1).style("stroke",function(b){return graphColor(a.n_probe_group)}).style("fill",function(b){return graphColor(a.n_probe_group)});d3.select("#chart").selectAll("g circle").filter(function(a){return a.probe_group!=f[b].n_probe_group}).transition().style("opacity",0);d3.select("#chart").selectAll(".link").transition().style("opacity",0.3).style("stroke",function(b){return graphColor(a.n_probe_group)});d3.select("#chart").selectAll(".link").filter(function(a){return a.probe_group!=f[b].n_probe_group}).transition().style("opacity", |
|
0);d3.select("#snps").selectAll("p").remove();d3.select("#pairs").selectAll("p").remove();d3.select("#snps").selectAll("p").data(function(){return e?zoom_allNodes:allNodes}).enter().append("p").filter(function(a){return a.probe_group===f[b].n_probe_group}).append("link").attr("href",function(a){return"http://genome.ucsc.edu/cgi-bin/hgTracks?org=human&db=hg19&position=chr"+a.chrom+":"+(a.bp_position-1E3)+"-"+(a.bp_position+1E3)}).attr("target","_blank").style("text-decoration","none").style("color", |
|
"black").text(function(a){return showSnp(a)});d3.select("#pairs").selectAll("p").data(function(){return e?zoom_links:links}).enter().append("p").filter(function(a){return a.probe_group===f[b].n_probe_group}).text(function(a){return showInteract(a.ct_id)})});g.selectAll(".bar").data(f).append("title").text(function(a){return a.n_edgs});g.selectAll(".text_b").data(f).enter().append("text").attr("class","text_b").text(function(a){return a.n_edgs}).attr("x",function(a){return m(a.n_edgs)}).attr("y",function(a){return k(a.n_probe_group)+ |
|
10}).attr("font-family","sans-serif").attr("font-size","11px").attr("fill","black").on("mousedown",function(a,b){d3.select("#hc").select("svg").remove();sid=f[b].n_probe_group;string_html='{"directed": false, "graph": [], "nodes": [';json_nodes_selected(file_json,sid);json_links_selected(file_json,sid);d3.select("#chart").selectAll("g circle").transition().style("opacity",1);d3.select("#chart").selectAll("g circle").filter(function(a){return a.probe_group!=f[b].n_probe_group}).transition().style("opacity", |
|
0);d3.select("#chart").selectAll(".link").transition().style("opacity",0.3);d3.select("#chart").selectAll(".link").filter(function(a){return a.probe_group!=f[b].n_probe_group}).transition().style("opacity",0);d3.select("#snps").selectAll("p").remove();d3.select("#pairs").selectAll("p").remove();d3.select("#snps").selectAll("p").data(function(){return e?zoom_allNodes:allNodes}).enter().append("p").filter(function(a){return a.probe_group===f[b].n_probe_group}).append("link").attr("href",function(a){return"http://genome.ucsc.edu/cgi-bin/hgTracks?org=human&db=hg19&position=chr"+ |
|
a.chrom+":"+(a.bp_position-1E3)+"-"+(a.bp_position+1E3)}).attr("target","_blank").style("text-decoration","none").style("color","black").text(function(a){return showSnp(a)});d3.select("#pairs").selectAll("p").data(function(){return e?zoom_links:links}).enter().append("p").filter(function(a){return a.probe_group===f[b].n_probe_group}).text(function(a){return showInteract(a.ct_id)})})})};var data_obj_mc=[],data_obj_mc2=[],array_SNPs_mc=[]; |
|
function read_file_to_matrix_comm_plot(b){data_obj_mc2=[];data_obj_mc=[];array_SNPs_mc=[];d3.json(b,function(b){b.links.forEach(function(a){var b={};b.label_x=parseInt(a.assoc_group.toString().split(".")[1]);b.label_y=a.source;b.probe_group=a.probe_group;data_obj_mc.push(b);data_obj_mc2.push(b);b={};b.label_x=parseInt(a.assoc_group.toString().split(".")[1]);b.label_y=a.target;b.probe_group=a.probe_group;data_obj_mc.push(b);data_obj_mc2.push(b)});data_obj_mc=[];d3.select("#minmap_matrixsc").selectAll("svg").remove(); |
|
d3.select("#chart").selectAll("svg").remove();for(var c in data_obj_mc2)1===data_obj_mc2[c].probe_group&&data_obj_mc.push(data_obj_mc2[c]);mix_1=0;mix_2=d3.max(data_obj_mc,function(a){return a.label_x})+1;miy_1=d3.min(data_obj_mc,function(a){return a.label_y})-1;miy_2=d3.max(data_obj_mc,function(a){return a.label_y})+1;matrix_comm_plot_minmap(mix_1,mix_2,miy_1,miy_2,0,0,0,0);matrix_comm_plot(mix_1,mix_2,miy_1,miy_2)})} |
|
function matrix_comm_plot(b,e,c,a){var d=d3.scale.linear().domain([b,e]).range([0,700]),h=d3.scale.linear().domain([c,a]).range([0,700]);b=d3.svg.axis().scale(d).orient("top");e=d3.svg.axis().scale(h).orient("left");var f=d3.select("#chart").append("svg").attr("width",800).attr("height",800).append("g").attr("transform","translate(50,50)");f.selectAll("path1").data(data_obj_mc).enter().append("svg:path").style("fill","#0d1dee").attr("transform",function(a){return"translate("+d(a.label_x)+","+h(a.label_y)+ |
|
")"}).attr("d",d3.svg.symbol().type("square").size("25"));f.append("g").attr("class","xmat axis").attr("transform","translate(0,0)").call(b);f.selectAll(".xmat text").attr("transform",function(a){return"translate("+1*this.getBBox().height+","+-1.5*this.getBBox().height+")rotate(-90)"});f.append("g").attr("class","y axis").call(e).append("text").attr("class","label").attr("transform","rotate(-90)").attr("x",-650).attr("y",7).attr("dy",".71em").style("text-anchor","end").text("SNP id");f.append("g").attr("class", |
|
"brush").call(d3.svg.brush().x(d).y(h).on("brushstart",function(){f.classed("selecting",!0)}).on("brush",function(){var a=d3.event.target.extent();mx_1=a[0][0];mx_2=a[1][0];my_1=a[0][1];my_2=a[1][1]}).on("brushend",function(){f.classed("selecting",!d3.event.target.empty())}))} |
|
function matrix_comm_plot_minmap(b,e,c,a,d,h,f,g){var k=d3.scale.linear().domain([b,e]).range([0,150]),m=d3.scale.linear().domain([c,a]).range([0,150]);b=d3.svg.axis().scale(k).orient("top");e=d3.svg.axis().scale(m).orient("left");c=d3.select("#minmap_matrixsc").append("svg").attr("width",250).attr("height",250).append("g").attr("transform","translate(50,50)");c.selectAll("path1").data(data_obj_mc).enter().append("svg:path").style("fill","#0d1dee").attr("transform",function(a){return"translate("+ |
|
k(a.label_x)+","+m(a.label_y)+")"}).attr("d",d3.svg.symbol().type("square").size("10"));0!=d&&0!=h&&0!=f&&0!=g&&c.selectAll("rect").data([0]).enter().append("rect").attr("x",k(d)).attr("y",m(h)).attr("width",k(f)).attr("height",m(g)-m(h)).attr("fill","rgba(255, 0, 0, 0.1)").attr("stroke","rgba(255, 0, 0, 1)").attr("stroke-width","5");c.append("g").attr("class","xmat axis").attr("transform","translate(0,0)").call(b);c.selectAll(".xmat text").attr("transform",function(a){return"translate("+1*this.getBBox().height+ |
|
","+-1.5*this.getBBox().height+")rotate(-90)"});c.append("g").attr("class","y axis").call(e)};function create_table_snps(b){var e=[],c=[];c.push("prb_a");c.push("prb_b");c.push("prbCode_a");c.push("prbCode_b");c.push("browser_a");c.push("browser_b");c.push("rs_a");c.push("rs_b");for(var a in b)"assoc_group"!=a&&"source"!=a&&"target"!=a&&"probe_group"!=a&&"ct_id"!=a&&c.push(a);e.push(c);c=[];c.push(allNodes[b.source].prb);c.push(allNodes[b.target].prb);c.push(allNodes[b.source].prbCode);c.push(allNodes[b.target].prbCode);c.push("chr"+allNodes[b.source].chrom+":"+allNodes[b.source].bp_position); |
|
c.push("chr"+allNodes[b.target].chrom+":"+allNodes[b.target].bp_position);c.push(allNodes[b.source].rs);c.push(allNodes[b.target].rs);for(a in b)"assoc_group"!=a&&"source"!=a&&"target"!=a&&"probe_group"!=a&&"ct_id"!=a&&c.push(b[a]);e.push(c);d3.select("#table_snps").append("table").style("border-collapse","collapse").style("border","2px black solid").selectAll("tr").data(e).enter().append("tr").selectAll("td").data(function(a){return a}).enter().append("td").style("border","1px black solid").style("padding", |
|
"10px").on("mouseover",function(){d3.select(this).style("background-color","aliceblue")}).on("mouseout",function(){d3.select(this).style("background-color","white")}).text(function(a){return a}).style("font-size","12px")};var string_html,label_text,data,data_from_HDS="no",data_select_from_HDS,mix_1,mix_2,miy_1,miy_2,mx_1,mx_2,my_1,my_2,plot_chosen,st_chosen,allNodes,data_weight_pvalue,links,file_json,select_dropbox_sort,select_dropbox,statOptions={},list_keys_json=[],use_communities="no",use_cont_table="no",st_1=[],brush_value1,brush_value2,graphColor=d3.scale.category20(); |
|
function handleFileSelect(b){b=b.target.files;for(var e=0,c;c=b[e];e++){var a=new FileReader;a.onload=function(a){return function(a){upload_json(a.target.result)}}(c);a.readAsDataURL(c)}};plot_chosen=document.getElementById("Plot_select").value; |
|
function upload_json(b){file_json=b;switch(plot_chosen){case "p_arc":remove_section();create_container_probegroup();drop_stat_cma();pvalue_range_container();create_textzoom_container();start_arc_plot(b);break;case "p_cir":remove_section();create_container_probegroup();drop_stat_cma();pvalue_range_container();create_textzoom_container();start_cir_plot(b);break;case "p_man":remove_section();drop_stat_cma();start_manhattan_plot(b);break;case "p_mat":remove_section(),start_heat_map(b)}} |
|
function remove_section(){links=[];allNodes=[];d3.select("#load_data").remove();d3.select("#chart").selectAll("svg").remove();d3.select("#scale_bar").selectAll("svg").remove();d3.select("#pairs").selectAll("p").remove();d3.select("body").selectAll("svg").remove();d3.select("#two_weight_value").selectAll("h").remove();d3.select("#hesid").selectAll("svg").remove();d3.select("#table_snps").selectAll("table").remove();d3.select("#butpl").remove();d3.select("#butrl").remove();d3.select("#textzoom").selectAll("select").remove(); |
|
d3.select("#textzoom").selectAll("input").remove();d3.select("#textzoom").selectAll("text").remove();d3.select("#container_matrix").remove();d3.select("#two_weight_value").remove();d3.select("#st_select").remove();d3.select("#hesid_text").remove();d3.select("#hesid_text").remove()} |
|
d3.select("#Plot_select").on("change",function(){plot_chosen=this.value;"p_cir"===this.value?(remove_section(),create_container_probegroup(),drop_stat_cma(),create_textzoom_container(),pvalue_range_container(),start_cir_plot(file_json)):"p_man"===this.value?(remove_section(),drop_stat_cma(),start_manhattan_plot(file_json)):"p_mat"===this.value?(remove_section(),d3.select("#st_select2").remove(),start_heat_map(file_json)):"p_arc"===this.value&&(remove_section(),create_container_probegroup(),drop_stat_cma(), |
|
create_textzoom_container(),pvalue_range_container(),start_arc_plot(file_json))}); |
|
function show_roc_ct(){snps=document.getElementById("search_snps").value;allNodes_links=[];for(var b in links)dic={prb_a:allNodes[links[b].source].prb,prb_b:allNodes[links[b].target].prb,prbCode_a:allNodes[links[b].source].prbCode,prbCode_b:allNodes[links[b].target].prbCode,browser_a:"chr"+allNodes[links[b].source].chrom+":"+allNodes[links[b].source].bp_position,browser_b:"chr"+allNodes[links[b].target].chrom+":"+allNodes[links[b].target].bp_position,rs_a:allNodes[links[b].source].rs,rs_b:allNodes[links[b].target].rs, |
|
id_links:b},allNodes_links.push(dic);snps=snps.split(" ");var e=snps[0],c=snps[snps.length-1],a="null",d;for(b in allNodes_links)if(e==allNodes_links[b].prb_a&&c==allNodes_links[b].prb_b||e==allNodes_links[b].prbCode_a&&c==allNodes_links[b].prbCode_b||e==allNodes_links[b].browser_a&&c==allNodes_links[b].browser_b||e==allNodes_links[b].rs_a&&c==allNodes_links[b].rs_b)a=allNodes_links[b].id_links,d=b;"null"!=a&&(d3.select("#table_snps").selectAll("table").remove(),create_table_snps(links[a]),d3.select("#rp").selectAll("svg").remove(), |
|
ROC_plot(links[a].ct_id,file_json),d3.select("#contp").selectAll("svg").remove(),cont_plot(links[a].ct_id,file_json),"p_cir"===plot_chosen?(d3.select("#chart").selectAll("g circle").transition().style("opacity",1),d3.select("#chart").selectAll("g circle").filter(function(a){return a.prb!=allNodes_links[d].prb_a&&a.prb!=allNodes_links[d].prb_b}).transition().style("opacity",0),d3.select("#chart").selectAll(".link").transition().style("opacity",0),d3.select("#chart").selectAll(".link").filter(function(a, |
|
b){return b==d}).transition(),style("opacity",0.3)):(d3.select("#table_snps").selectAll("table").remove(),d3.select("#rp").selectAll("svg").remove(),d3.select("#contp").selectAll("svg").remove(),alert("Error: search again!")))} |
|
function selected_json(){d3.json(file_json,function(b){function e(a){!0!=map_id.has(a)&&(map_id.set(a,number_count_map_id),number_count_map_id+=1)}function c(a){!0!=map_degree.has(a)?map_degree.set(a,1):(v=map_degree.get(a)+1,map_degree.set(a,v))}var a="",d='"links": [',a='"nodes": [',h='"subgraphs": [',f='"cont_table": [';number_count_probe_group=1;number_count_degree=number_count_ct_id=number_count_map_id=0;map_degree=d3.map();map_probe_group=d3.map();map_id=d3.map();map_nodes=d3.map();map_subgraph_nedges= |
|
d3.map();map_ct_id=d3.map();for(var g in b)list_keys_json.push(g);b.links.forEach(function(a){if(a[st_chosen]>=brush_value1&&a[st_chosen]<=brush_value2){c(a.source);c(a.target);e(a.source);e(a.target);var b=a.probe_group;!0!=map_probe_group.has(b)&&(map_probe_group.set(b,number_count_probe_group),number_count_probe_group+=1);b=map_probe_group.get(a.probe_group);!0!=map_subgraph_nedges.has(b)?map_subgraph_nedges.set(b,1):(v=map_subgraph_nedges.get(b)+1,map_subgraph_nedges.set(b,v));"yes"==use_cont_table? |
|
(b=a.ct_id,!0!=map_ct_id.has(b)&&(map_ct_id.set(b,number_count_ct_id),number_count_ct_id+=1),string_link=map_id.get(a.source)>map_id.get(a.target)?'{"source": '+map_id.get(a.source)+', "probe_group": '+map_probe_group.get(a.probe_group)+', "target": '+map_id.get(a.target)+', "ct_id": '+map_ct_id.get(a.ct_id):'{"source": '+map_id.get(a.target)+', "probe_group": '+map_probe_group.get(a.probe_group)+', "target": '+map_id.get(a.source)+', "ct_id": '+map_ct_id.get(a.ct_id)):string_link=map_id.get(a.source)> |
|
map_id.get(a.target)?'{"source": '+map_id.get(a.source)+', "probe_group": '+map_probe_group.get(a.probe_group)+', "target": '+map_id.get(a.target):'{"source": '+map_id.get(a.target)+', "probe_group": '+map_probe_group.get(a.probe_group)+', "target": '+map_id.get(a.source);for(g in st_1)string_link+=', "'+st_1[g]+'": '+a[st_1[g]];string_link+="},";d+=string_link}});d=d.substring(0,d.lastIndexOf(","));d+="]";b.nodes.forEach(function(a){if(map_id.has(a.id)){string_node='{"degree": '+map_degree.get(a.id)+ |
|
', "id": '+map_id.get(a.id)+', "probe_group": '+map_probe_group.get(a.probe_group);for(var b in a)"id"!=b&&"probe_group"!=b&&"degree"!=b&&(string_node=string_node+' ,"'+b+'": "'+a[b]+'"');string_node+="}";map_nodes.set(map_id.get(a.id),string_node)}});sort_keys=map_nodes.keys();sort_keys.sort(function(a,b){return a-b});for(g in sort_keys)a+=map_nodes.get(sort_keys[g])+",";a=a.substring(0,a.lastIndexOf(","));a+="]";if("yes"==use_cont_table){Array_map_ct_id=[];b.cont_table.forEach(function(a,b){b in |
|
map_ct_id.keys()&&Array_map_ct_id.push(a)});for(g in Array_map_ct_id)f+='{"unv1": [{"controls": '+Array_map_ct_id[g].unv1[0].controls+',"cases": '+Array_map_ct_id[g].unv1[0].cases+"} ",f+=',{"controls": '+Array_map_ct_id[g].unv1[1].controls+',"cases": '+Array_map_ct_id[g].unv1[1].cases+"} ",f+=',{"controls": '+Array_map_ct_id[g].unv1[2].controls+',"cases": '+Array_map_ct_id[g].unv1[2].cases+"}], ",f+='"unv2": [{"controls": '+Array_map_ct_id[g].unv2[0].controls+',"cases": '+Array_map_ct_id[g].unv2[0].cases+ |
|
"} ",f+=',{"controls": '+Array_map_ct_id[g].unv2[1].controls+',"cases": '+Array_map_ct_id[g].unv2[1].cases+"} ",f+=',{"controls": '+Array_map_ct_id[g].unv2[2].controls+',"cases": '+Array_map_ct_id[g].unv2[2].cases+"}], ",f+='"biv": [[{"controls": '+Array_map_ct_id[g].biv[0][0].controls+',"cases": '+Array_map_ct_id[g].biv[0][0].cases+"} ",f+=',{"controls": '+Array_map_ct_id[g].biv[0][1].controls+',"cases": '+Array_map_ct_id[g].biv[0][1].cases+"} ",f+=',{"controls": '+Array_map_ct_id[g].biv[0][2].controls+ |
|
',"cases": '+Array_map_ct_id[g].biv[0][2].cases+"}], ",f+='[{"controls": '+Array_map_ct_id[g].biv[1][0].controls+',"cases": '+Array_map_ct_id[g].biv[1][0].cases+"} ",f+=',{"controls": '+Array_map_ct_id[g].biv[1][1].controls+',"cases": '+Array_map_ct_id[g].biv[1][1].cases+"} ",f+=',{"controls": '+Array_map_ct_id[g].biv[1][2].controls+',"cases": '+Array_map_ct_id[g].biv[1][2].cases+"}], ",f+='[{"controls": '+Array_map_ct_id[g].biv[2][0].controls+',"cases": '+Array_map_ct_id[g].biv[2][0].cases+"} ", |
|
f+=',{"controls": '+Array_map_ct_id[g].biv[2][1].controls+',"cases": '+Array_map_ct_id[g].biv[2][1].cases+"} ",f+=',{"controls": '+Array_map_ct_id[g].biv[2][2].controls+',"cases": '+Array_map_ct_id[g].biv[2][2].cases+"}]], ",f+='"total": {"controls": '+Array_map_ct_id[g].unv2[0].controls+',"cases": '+Array_map_ct_id[g].unv2[0].cases+"}} ,";f=f.substring(0,f.lastIndexOf(","));f+="]"}map_subgraph_nedges.forEach(function(a,b){h+='{"probe_group": '+a+', "edge_count": '+b+"},"});h=h.substring(0,h.lastIndexOf(",")); |
|
h+="]";a="yes"==use_cont_table?'{"name": "export_name", '+a+", "+d+", "+h+", "+f+"} ":'{"name": "export_name", '+a+", "+d+", "+h+"} ";b=new Blob([a],{type:"text/plain"});a=document.getElementById("inputFileNameToSaveAs").value;f=document.getElementById("downloadfile");f.download=a;f.innerHTML="Download "+a;null!=window.webkitURL?(f.href=window.webkitURL.createObjectURL(b),f.click()):f.href=window.URL.createObjectURL(b)})} |
|
function showInteract(b){str=allNodes[links[b].source].rs+" chr"+allNodes[links[b].source].chrom+":"+allNodes[links[b].source].bp_position+" "+allNodes[links[b].target].rs+" chr"+allNodes[links[b].target].chrom+":"+allNodes[links[b].target].bp_position+" ";for(var e in links[b])"assoc_group"!=e&&"ct_id"!=e&&"source"!=e&&"target"!=e&&(str=str+e+": "+links[b][e]+" ");return str} |
|
function highlight_snp_pairs(b,e,c){d3.select("#pairs").selectAll("p").remove();show_snp_pairs_list(file_json,select_dropbox_sort,1,c,b.ct_id);b=$("#pairs");$("html,body").animate({scrollTop:b.offset().top})} |
|
function json_nodes_selected(b,e){d3.json(b,function(b){b.nodes.forEach(function(a){a.probe_group===e&&(string_html+='{"label": "'+a.label+'", "degree": '+a.degree+', "rs": "'+a.rs+'", "bp_position": '+a.bp_position+', "chrom": '+a.chrom+', "id": '+a.id+', "probe_group": '+a.probe_group+"},")});string_html=string_html.substring(0,string_html.lastIndexOf(","));string_html+='], "links": ['})} |
|
function json_links_selected(b,e){d3.json(b,function(b){b.links.forEach(function(a){a.probe_group===e&&(string_html+='{"source:" '+a.source+', "probe_group": '+a.probe_group+', "weight": '+a.weight+', "target": '+a.target+', "edgs_in_comm": '+a.edgs_in_comm+', "assoc_group": '+a.assoc_group+"},")});string_html=string_html.substring(0,string_html.lastIndexOf(","));string_html+='], "multigraph": false}'})}function two_dec(b){b=b.toString();var e=b.indexOf(".")+3;return b.substring(0,e)} |
|
function include_in_arr(b,e){return-1!=b.indexOf(e)}function nodes_selected(b,e,c){l=[];for(var a in c)c[a][st_chosen]>=b&&c[a][st_chosen]<=e&&(l.push(c[a].target),l.push(c[a].source));return l} |
|
function json_nodes_selected(b,e){d3.json(b,function(b){b.nodes.forEach(function(a){a.probe_group===e&&(string_html+='{"label": "'+a.label+'", "degree": '+a.degree+', "rs": "'+a.rs+'", "bp_position": '+a.bp_position+', "chrom": '+a.chrom+', "id": '+a.id+', "probe_group": '+a.probe_group+"},")});string_html=string_html.substring(0,string_html.lastIndexOf(","));string_html+='], "links": ['})} |
|
function json_links_selected(b,e){d3.json(b,function(b){b.links.forEach(function(a){a.probe_group===e&&(string_html+='{"source:" '+a.source+', "probe_group": '+a.probe_group+', "weight": '+a.weight+', "target": '+a.target+', "edgs_in_comm": '+a.edgs_in_comm+', "assoc_group": '+a.assoc_group+"},")});string_html=string_html.substring(0,string_html.lastIndexOf(","));string_html+='], "multigraph": false}'})} |
|
d3.select("body").select("#butz").on("click",function(){switch(plot_chosen){case "p_arc":zoom_arc(file_json);break;case "p_cir":zoom_circular(file_json);break;case "p_man":zoom_manhattan(file_json);break;case "p_mat":zoom_heatmap(file_json)}}); |
|
d3.select("body").select("#butr").on("click",function(){switch(plot_chosen){case "p_arc":remove_section();create_container_probegroup();drop_stat_cma();pvalue_range_container();create_textzoom_container();start_arc_plot(file_json);break;case "p_cir":remove_section();create_container_probegroup();drop_stat_cma();pvalue_range_container();create_textzoom_container();start_cir_plot(file_json);break;case "p_man":remove_section();drop_stat_cma();reset_manhattan();break;case "p_mat":remove_section(),start_heat_map(file_json)}}); |
|
function load_stat_value(b){data_weight_pvalue=[];statOptions=[];d3.json(b,function(e){for(var c in e.links[0])"assoc_group"!=c&&"source"!=c&&"target"!=c&&"probe_group"!=c&&"ct_id"!=c&&(statOptions[c]=c,st_1.push(c));st_chosen=st_1[0];show_snp_pairs_list(b,st_chosen,0,0);e.links.forEach(function(a){data_weight_pvalue.push(a[st_chosen])});creat_drop_box1("st_select2");creat_drop_box1("st_select_snp_pairs");select_snp_stat_range(0)})} |
|
function creat_drop_box1(b){d3.select("#"+b).selectAll("select").remove();switch(b){case "st_select_snp_pairs":select_dropbox_sort=d3.select("#"+b).append("select").attr("id","drop_sort");select_dropbox_sort.selectAll("option").data(d3.keys(statOptions)).enter().append("option").text(function(b){return b});select_dropbox.selectAll("option").data(d3.values(statOptions)).attr("value",function(b){return b});d3.select("#drop_sort").on("change",function(){st_chosen=this.value;d3.select("#pairs").selectAll("p").remove(); |
|
show_snp_pairs_list(file_json,st_chosen,0,0)});break;case "st_select2":select_dropbox=d3.select("#"+b).append("select").attr("id","dropselect"),select_dropbox.selectAll("option").data(d3.keys(statOptions)).enter().append("option").text(function(b){return b}),select_dropbox.selectAll("option").data(d3.values(statOptions)).attr("value",function(b){return b}),d3.select("#dropselect").on("change",function(){st_chosen=this.value;"p_man"==plot_chosen?(d3.select("#chart").selectAll("svg").remove(),d3.select("#scale_bar").selectAll("svg").remove(), |
|
d3.select("#minmap_mp").selectAll("svg").remove(),d3.select("#hds_matrix").selectAll("svg").remove(),read_file_to_manhattan_plot(file_json),histogram_degree_SNPs(file_json,0)):(data_weight_pvalue=[],d3.json(file_json,function(b){b.links.forEach(function(b){data_weight_pvalue.push(b[st_chosen])});select_snp_stat_range(0)}))})}} |
|
function create_textzoom_container(){for(var b=[],e=0;24>e;e++)b[e]=22>e?e+1:22==e?"x":"y";d3.select("#textzoom").append("select").attr("id","view_chr").selectAll("option").data(b).enter().append("option").text(function(b){return b}).attr("value",function(b,a){return a+1});d3.select("#textzoom").append("input").attr("id","texzs").attr("type","text").attr("size","10").attr("name","textzoomstart").attr("value","").attr("placeholder","start base");d3.select("#textzoom").append("input").attr("id","texze").attr("type", |
|
"text").attr("size","10").attr("name","textzoomend").attr("value","").attr("placeholder","end base")}function pvalue_range_container(){d3.select("#stat_range_container").append("div").attr("id","two_weight_value").text("Values: ").append("span").append("div").attr("id","brush_weight").append("br")}function drop_stat_cma(){d3.select("#st_select_dropbox").selectAll("div").remove();d3.select("#st_select_dropbox").append("div").attr("id","st_select2").text("Statistical Test").append("br")} |
|
function create_container_probegroup(){d3.select("#probegroup_container").selectAll("div").remove();d3.select("#probegroup_container").append("div").attr("id","hesid_text").append("h3").text("Probe group").append("span").append("a").attr("id","min1").attr("class","lnk-minimizar").attr("href","#").text("-");d3.select("#probegroup_container").append("div").attr("id","hesid").append("br");$(document).ready(function(){$("#min1").click(function(){$("#hesid").is(":visible")?($("#hesid").slideUp(),$(this).html("+")): |
|
($("#hesid").slideDown(),$(this).html("-"))})})} |
|
function select_snp_stat_range(b){d3.select("#brush_weight").selectAll("svg").remove();var e=d3.scale.linear().domain([d3.min(data_weight_pvalue,function(a){return a})-1,d3.max(data_weight_pvalue,function(a){return a})+1]).range([30,440]),c=d3.scale.linear().domain([0,0]).range([20,-220]),a=d3.svg.axis().scale(e).orient("bottom").ticks(8),d=d3.select("#brush_weight").append("svg").attr("class","weightPvalue").attr("width",500).attr("height",40),h=d.selectAll("circle").data(data_weight_pvalue).enter().append("circle").attr("cx",function(a){return e(a)}).attr("cy", |
|
function(a){return c(0)}).attr("r",2);d.append("g").attr("class","axis").attr("transform","translate(0,20)").call(a);d.append("g").attr("class","brush").call(d3.svg.brush().x(e).on("brushstart",function(){d.classed("selecting",!0)}).on("brush",function(){var a=d3.event.target.extent();h.classed("selected",function(b){return a[0]<=b&&b<=a[1]});d3.select("#two_weight_value").selectAll("h").remove();d3.select("#two_weight_value").selectAll("h").data([1]).enter().append("h").text(two_dec(a[0])+" - "+ |
|
two_dec(a[1]));brush_value1=a[0];brush_value2=a[1];if(b){d3.select("#chart").selectAll(".link").transition().style("opacity",0.3);d3.select("#mainplot").selectAll(".link").filter(function(b){return b[st_chosen]<=a[0]||b[st_chosen]>=a[1]}).transition().style("opacity",0);d3.select("#chart").selectAll("g .circle_zoom").transition().style("opacity",0);var c=[],c=nodes_selected(a[0],a[1],zoom_links);d3.select("#chart").selectAll("g .circle_zoom").filter(function(a,b){if(include_in_arr(c,a.id))return a}).transition().style("opacity", |
|
1);d3.select("#snps").selectAll("p").remove();d3.select("#snps").selectAll("p").data(zoom_allNodes).enter().append("p").filter(function(a,b){if(include_in_arr(c,a.id))return a}).append("link").attr("href",function(a){return"http://genome.ucsc.edu/cgi-bin/hgTracks?org=human&db=hg19&position=chr"+a.chrom+":"+(a.bp_position-1E3)+"-"+(a.bp_position+1E3)}).attr("target","_blank").style("text-decoration","none").style("color","black").text(function(a){return showSnp(a)});d3.select("#pairs").selectAll("p").remove(); |
|
d3.select("#pairs").selectAll("p").data(zoom_links).enter().append("p").text(function(b){return b[st_chosen]>=a[0]&&b[st_chosen]<=a[1]?showInteract(b.ct_id):""})}else d3.select("#chart").selectAll(".link").transition().style("opacity",0.3),d3.select("#mainplot").selectAll(".link").filter(function(b){return b[st_chosen]<=a[0]||b[st_chosen]>=a[1]}).transition().style("opacity",0),d3.select("#chart").selectAll("g circle").transition().style("opacity",0),c=[],c=nodes_selected(a[0],a[1],links),d3.select("#chart").selectAll("g circle").filter(function(a, |
|
b){if(include_in_arr(c,b))return a}).transition().style("opacity",1),d3.select("#snps").selectAll("p").remove(),d3.select("#snps").selectAll("p").data(allNodes).enter().append("p").filter(function(a,b){if(include_in_arr(c,b))return a}).append("link").attr("href",function(a){return"http://genome.ucsc.edu/cgi-bin/hgTracks?org=human&db=hg19&position=chr"+a.chrom+":"+(a.bp_position-1E3)+"-"+(a.bp_position+1E3)}).attr("target","_blank").style("text-decoration","none").style("color","black").text(function(a){return showSnp(a)}), |
|
d3.select("#pairs").selectAll("p").remove(),d3.select("#pairs").selectAll("p").data(links).enter().append("p").text(function(b){return b[st_chosen]>=a[0]&&b[st_chosen]<=a[1]?showInteract(b.ct_id):""})}).on("brushend",function(){d.classed("selecting",!d3.event.target.empty())})).selectAll("rect").attr("height",40)};for(var width=800,height=800,chromcolour=[d3.rgb(153,102,0),d3.rgb(102,102,0),d3.rgb(153,153,30),d3.rgb(204,0,0),d3.rgb(255,0,0),d3.rgb(255,0,204),d3.rgb(255,204,204),d3.rgb(255,153,0),d3.rgb(255,204,0),d3.rgb(255,255,0),d3.rgb(204,255,0),d3.rgb(0,255,0),d3.rgb(53,128,0),d3.rgb(0,0,204),d3.rgb(102,153,255),d3.rgb(153,204,255),d3.rgb(0,255,255),d3.rgb(204,255,255),d3.rgb(153,0,204),d3.rgb(204,51,255),d3.rgb(204,153,255),d3.rgb(102,102,102),d3.rgb(153,153,153),d3.rgb(204,204,204),d3.rgb(1,1,1)],chrom_length= |
|
0,chrom_acum_length=[],chromLength=[249250621,243199373,198022430,191154276,180915260,171115067,159138663,146364022,141213431,135534747,135006516,133851895,115169878,107349540,102531392,90354753,81195210,78077248,59128983,63025520,48129895,51304566,155270560,59373566],axis_chrom=[],i=0;3E8>=i;)axis_chrom.push(i),i+=25E6;for(var ticks_chrom=[],i=0;i<chromLength.length;i++)ticks_chrom.push((chromLength[i]/25E6>>0)+1);for(i=0;i<chromLength.length;i++)chrom_length+=chromLength[i],chrom_acum_length.push(chrom_length); |
|
var height_chrom_bar=600,high_nodes=height_chrom_bar-5,file_name_zoom,test,zoom_allNodes=[],zoom_links=[];function read_file_to_arc_plot(b){file_name_zoom=b;d3.json(b,function(b){b.links.forEach(function(b){links.push(b)});b.nodes.forEach(function(b){allNodes.push(b)});ix_1=0;ix_2=chrom_length;create_arc_plot(ix_1,ix_2)})} |
|
function create_arc_plot(b,e){for(var c=d3.scale.linear().domain([b,e]).range([0,678]),a=[""],d=[0],h=0;h<chrom_acum_length.length;h++)a.push("chr"+(h+1)),d.push(c(chrom_acum_length[h]));a=d3.select("#chart").append("svg").attr("id","mainplot").attr("width",width).attr("height",height).append("g").attr("transform","translate(1,1)");h=a.selectAll("g.group").data(chromLength).enter().append("svg:g").attr("transform",function(a,b){return"translate("+(d[b]+5*b)+","+height_chrom_bar+")"}).attr("width", |
|
function(a,b){return c(chromLength[b])}).attr("height",40).attr("class","group");h.append("rect").attr("transform","translate(0,5)").attr("class","rect").attr("width",function(a,b){return c(chromLength[b])}).attr("height",20).style("fill",function(a,b){return chromcolour[b]}).style("stroke",function(a,b){return chromcolour[b]});h.append("svg:text").attr("class","chromosom_number").attr("transform","translate(10,35)").append("svg:textPath").text(function(a,b){return b+1}).attr("font-size","9px").attr("text-anchor", |
|
"end").style("fill",function(a,b){return chromcolour[b]}).style("stroke",function(a,b){return chromcolour[b]});h.selectAll("line").data(function(a,b){return axis_chrom.slice(0,ticks_chrom[b])}).enter().append("line").attr("class","tickchromosomes").attr("x1",function(a){return c(a)}).attr("y1",0).attr("x2",function(a){return c(a)}).attr("y2",5).style("stroke","#000");a.selectAll("circle").data(allNodes).enter().append("circle").attr("class","nodes").style("fill",function(a){return graphColor(a.probe_group)}).style("stroke", |
|
function(a){return graphColor(a.probe_group)}).attr("cx",function(a){return d[a.chrom-1]+5*(a.chrom-1)+c(a.bp_position)}).attr("cy",high_nodes).attr("r",2).on("click",function(a,b){var c=prompt("\n1) ClinVar\n2) dbSNP\n3) Ensembl\n4) PheGenI\n5) OMIM\n6) openSNP\n7) SNPedia\n8) UCSC");if(null!=c){switch(c){case "1":html="http://www.ncbi.nlm.nih.gov/clinvar?term=rs"+allNodes[b].rs.substring(2);break;case "2":html="http://www.ncbi.nlm.nih.gov/SNP/snp_ref.cgi?rs="+allNodes[b].rs.substring(2);break;case "3":html= |
|
"http://www.ensembl.org/Homo_sapiens/Variation/Summary?r="+allNodes[b].chrom+":"+(allNodes[b].bp_position-1E3)+"-"+(allNodes[b].bp_position+1E3)+";source=dbSNP;v=rs"+allNodes[b].rs.substring(2)+";vdb=variation";break;case "4":html="http://www.ncbi.nlm.nih.gov/gap/phegeni?tab=2&rs="+allNodes[b].rs.substring(2);break;case "5":html="http://omim.org/search?index=entry&search=rs"+allNodes[b].rs.substring(2);break;case "6":html="http://opensnp.org/snps/"+allNodes[b].rs;break;case "7":html="http://www.snpedia.com/index.php/Rs"+ |
|
allNodes[b].rs.substring(2);break;case "8":html="http://genome.ucsc.edu/cgi-bin/hgTracks?org=human&db=hg19&position=chr"+allNodes[b].chrom+":"+(allNodes[b].bp_position-1E3)+"-"+(allNodes[b].bp_position+1E3);break;default:alert("You have not selected a source")}window.open(html)}});a.selectAll("g circle").append("title").text(function(a){return"degree: "+two_dec(a.degree)+"\nSNP: "+a.rs+"\nprobe_group: "+a.probe_group+"\nposition: "+a.bp_position});a.selectAll("path").data(links).enter().append("path").attr("class", |
|
"link").style("stroke",function(a){return graphColor(a.probe_group)}).style("stroke",1).style("opacity",0.7).style("fill","none").attr("d",function(a){if(a.source>a.target){var b;b=a.source;a.source=a.target;a.target=b}var e=d[allNodes[a.source].chrom-1]+5*(allNodes[a.source].chrom-1)+c(allNodes[a.source].bp_position),h=high_nodes;a=d[allNodes[a.target].chrom-1]+5*(allNodes[a.target].chrom-1)+c(allNodes[a.target].bp_position);var n=high_nodes;a<e&&(b=a,a=e,e=b);b=(a-e)/2;return"M"+e+","+h+" C"+e+ |
|
","+(h-b)+","+a+","+(n-b)+" "+a+","+n}).on("click",function(a,b){return highlight_snp_pairs(a,b,0)})} |
|
function zoom_arc_plot(b,e,c){for(var a=chrom_length-chromLength[b-1],d=[],h=0;h<chromLength.length;h++){var f;b-1==h?d.push(370.5):(f=370.5/a*chromLength[h],d.push(f))}for(var g=[0],k=0,h=0;h<chrom_acum_length.length;h++)k=k+d[h]+2,g.push(k);for(var m=c-e,k=[],h=0;20>h;h++){var n,q,p;0==m?(n=g[b-1]+d[b-1]/20*h,f=Math.round(chromLength[b-1]/20/1E6*h)+"MB"):(n=g[b-1]+d[b-1]/20*h,f=Math.round(e+m/20*h),5E4>f?(q=1,p=""):5E7>f?(q=1E3,p="Kb"):(q=1E6,p="Mb"),f=Math.round(f/q)+p);q={};q.x=n;q.label=f;k.push(q)}h= |
|
d3.select("#chart").append("svg").attr("id","mainplot").attr("width",width).attr("height",height).append("g").attr("transform","translate(10,1)");n=h.selectAll("g.group").data(chromLength).enter().append("svg:g").attr("transform",function(a,b){return"translate("+g[b]+","+height_chrom_bar+")"}).attr("width",function(a,b){return d[b]}).attr("height",40).attr("class",function(a,b){return"chrom"+(b+1)});f="g.chrom"+b;q=0==e&&0==c?d3.scale.linear().domain([0,chromLength[b-1]]).range([0,d[b-1]]):d3.scale.linear().domain([e, |
|
c]).range([0,d[b-1]]);var s=h.select(f).append("g").attr("class","brush").call(d3.svg.brush().x(q).on("brushstart",function(){s.classed("selecting",!0)}).on("brush",function(){var a=d3.event.target.extent();document.getElementById("texzs").value=Math.round(a[0]);document.getElementById("texze").value=Math.round(a[1])}).on("brushend",function(){s.classed("selecting",!d3.event.target.empty())})).selectAll("rect").attr("height",40).style("stroke","blue").style("fill","blue").style("opacity",0.7);n.append("rect").attr("transform", |
|
"translate(0,0)").attr("class","rect").attr("width",function(a,b){return d[b]}).attr("height",20).style("fill",function(a,b){return chromcolour[b]}).style("stroke",function(a,b){return chromcolour[b]});h.selectAll("line").data(k).enter().append("line").attr("class","tickchromosome").attr("x1",function(a){return+a.x}).attr("y1",high_nodes+25).attr("x2",function(a){return+a.x}).attr("y2",high_nodes+30).style("stroke","#000");h.selectAll("text").data(k).enter().append("text").attr("class","label").attr("dy", |
|
".35em").attr("transform",function(a){return"translate("+a.x+","+(high_nodes+38)+")rotate(90)"}).attr("font-size","10").text(function(a){return a.label});n.append("svg:text").attr("class","chromosom_number").attr("transform",function(a,c){return c==b-1?"translate(16,15)":"translate(8,35)"}).append("svg:textPath").text(function(a,b){return b+1}).attr("font-size",function(a,c){return c==b-1?"14px":"9px"}).attr("text-anchor","end").style("fill",function(a,c){return c==b-1?"#000":chromcolour[c]}).style("stroke", |
|
function(a,c){return c==b-1?"#000":chromcolour[c]});zoom_allNodes=[];zoom_links=[];links.forEach(function(a){if(allNodes[a.source].chrom==b&&allNodes[a.source].bp_position>=e&&allNodes[a.source].bp_position<=c||allNodes[a.source].chrom==b&&0==m||allNodes[a.target].chrom==b&&allNodes[a.target].bp_position>=e&&allNodes[a.target].bp_position<=c||allNodes[a.target].chrom==b&&0==m)zoom_allNodes.push(allNodes[a.source]),zoom_allNodes.push(allNodes[a.target]),zoom_links.push(a)});var r=[];h.selectAll("circle.vertex").data(zoom_allNodes).enter().append("circle").attr("class", |
|
"circle_zoom").style("fill",function(a){return graphColor(a.probe_group)}).style("stroke",function(a){return graphColor(a.probe_group)}).attr("cx",function(d){return d.chrom==b&&0==m?(r[d.id]=g[d.chrom-1]+370.5/chromLength[d.chrom-1]*d.bp_position,r[d.id]):d.chrom==b&&0<m&&d.bp_position>=e&&d.bp_position<=c?(r[d.id]=g[d.chrom-1]+370.5/m*(d.bp_position-e),r[d.id]):d.chrom==b&&0<m&&d.bp_position<e?(r[d.id]=g[d.chrom-1],r[d.id]):d.chrom==b&&0<m&&d.bp_position>c?(r[d.id]=g[d.chrom-1]+370.5,r[d.id]):d.chrom!= |
|
b?(r[d.id]=g[d.chrom-1]+370.5/a*d.bp_position,r[d.id]):r[d.id]="NaN"}).attr("cy",high_nodes).attr("r",function(a){return"NaN"==r[a.id]&&a.chrom==b?0:2}).on("click",function(a,b){var d=prompt("\n1) ClinVar\n2) dbSNP\n3) Ensembl\n4) PheGenI\n5) OMIM\n6) openSNP\n7) SNPedia\n8) UCSC");if(null!=d){switch(d){case "1":html="http://www.ncbi.nlm.nih.gov/clinvar?term=rs"+a.rs.substring(2);break;case "2":html="http://www.ncbi.nlm.nih.gov/SNP/snp_ref.cgi?rs="+a.rs.substring(2);break;case "3":html="http://www.ensembl.org/Homo_sapiens/Variation/Summary?r="+ |
|
a.chrom+":"+(a.bp_position-1E3)+"-"+(a.bp_position+1E3)+";source=dbSNP;v=rs"+a.rs.substring(2)+";vdb=variation";break;case "4":html="http://www.ncbi.nlm.nih.gov/gap/phegeni?tab=2&rs="+a.rs.substring(2);break;case "5":html="http://omim.org/search?index=entry&search=rs"+a.rs.substring(2);break;case "6":html="http://opensnp.org/snps/"+a.rs;break;case "7":html="http://www.snpedia.com/index.php/Rs"+a.rs.substring(2);break;case "8":html="http://genome.ucsc.edu/cgi-bin/hgTracks?org=human&db=hg19&position=chr"+ |
|
a.chrom+":"+(a.bp_position-1E3)+"-"+(a.bp_position+1E3);break;default:alert("You have not chosen a source")}window.open(html)}});h.selectAll("g .circle_zoom").append("title").text(function(a){return"degree: "+two_dec(a.degree)+"\nSNP: "+a.rs+"\nprobe_group: "+a.probe_group+"\nposition: "+a.bp_position});h.selectAll("path.link").data(zoom_links).enter().append("path").attr("class","link").style("stroke",function(a){return graphColor(a.probe_group)}).style("stroke",1).style("stroke-width",2.5).style("opacity", |
|
3.7).style("fill","none").attr("d",function(a){if(a.source>a.target){var d;d=a.source;a.source=a.target;a.target=d}if(allNodes[a.source].chrom==b||allNodes[a.target].chrom==b){var c=r[a.source],e=high_nodes;a=r[a.target];var f=high_nodes}else c="NaN",e=high_nodes,a="NaN",f=high_nodes;a<c&&(d=a,a=c,c=d);d=(a-c)/2;return"M"+c+","+e+" C"+c+","+(e-d)+","+a+","+(f-d)+" "+a+","+f}).on("click",function(a,b){return highlight_snp_pairs(a,b,1)})};var if_zoom;function start_arc_plot(b){d3.select("#chart").selectAll("svg").remove();d3.select("#hesid").selectAll("svg").remove();d3.select("#hds_matrix").selectAll("svg").remove();file_json=b;if_zoom=0;load_stat_value(file_json);read_file_to_arc_plot(file_json);histogram_edges_subgraphId(file_json,if_zoom);histogram_degree_SNPs(file_json,0)} |
|
function zoom_arc(b){file_json=b;d3.select("#hesid").selectAll("svg").remove();d3.select("#chart").selectAll("svg").remove();d3.select("#pairs").selectAll("p").remove();d3.select("body").selectAll("svg").remove();d3.select("#two_weight_value").selectAll("h").remove();d3.select("#hds_matrix").selectAll("svg").remove();view_chr=document.getElementById("view_chr").value;view_start=document.getElementById("texzs").value;view_end=document.getElementById("texze").value;if_zoom=1;zoom_arc_plot(+view_chr, |
|
+view_start,+view_end);data_weight_pvalue=[];zoom_links.forEach(function(b){data_weight_pvalue.push(b[st_chosen])});select_snp_stat_range(if_zoom);histogram_degree_SNPs(file_json,0);histogram_edges_subgraphId(file_json,if_zoom);show_snp_pairs_list(file_json,st_chosen,0,if_zoom)} |
|
function showInteract(b){str=allNodes[links[b].source].rs+" chr"+allNodes[links[b].source].chrom+":"+allNodes[links[b].source].bp_position+" "+allNodes[links[b].target].rs+" chr"+allNodes[links[b].target].chrom+":"+allNodes[links[b].target].bp_position+" ";for(var e in links[b])"assoc_group"!=e&&"ct_id"!=e&&"source"!=e&&"target"!=e&&(str=str+e+": "+links[b][e]+" ");return str};function start_cir_plot(b){d3.select("#chart").selectAll("svg").remove();d3.select("#hesid").selectAll("svg").remove();d3.select("#pairs").selectAll("p").remove();d3.select("#hds_matrix").selectAll("svg").remove();d3.select("#load_data").remove();file_json=b;load_stat_value(file_json);Create_chr_circle(0,0,0);Create_SNP_association(file_json);histogram_edges_subgraphId(file_json,0);histogram_degree_SNPs(file_json,0)} |
|
function zoom_circular(b){file_json=b;d3.select("#hesid").selectAll("svg").remove();d3.select("#scale_bar").selectAll("svg").remove();d3.select("#chart").selectAll("svg").remove();d3.select("#pairs").selectAll("p").remove();d3.select("body").selectAll("svg").remove();d3.select("#two_weight_value").selectAll("h").remove();d3.select("#hds_matrix").selectAll("svg").remove();view_chr=document.getElementById("view_chr").value;view_start=document.getElementById("texzs").value;view_end=document.getElementById("texze").value; |
|
load_stat_value(file_json);Create_chr_circle(+view_chr,+view_start,+view_end);Create_SNP_association(file_json);histogram_edges_subgraphId(file_json);histogram_degree_SNPs(file_json,0)};var chromRingOuterRadius=0.42*Math.min(width,height),chromRingInnerRadius=0.95*chromRingOuterRadius,chromColor=[d3.rgb(153,102,0),d3.rgb(102,102,0),d3.rgb(153,153,30),d3.rgb(204,0,0),d3.rgb(255,0,0),d3.rgb(255,0,204),d3.rgb(255,204,204),d3.rgb(255,153,0),d3.rgb(255,204,0),d3.rgb(255,255,0),d3.rgb(204,255,0),d3.rgb(0,255,0),d3.rgb(53,128,0),d3.rgb(0,0,204),d3.rgb(102,153,255),d3.rgb(153,204,255),d3.rgb(0,255,255),d3.rgb(204,255,255),d3.rgb(153,0,204),d3.rgb(204,51,255),d3.rgb(204,153,255),d3.rgb(102, |
|
102,102),d3.rgb(153,153,153),d3.rgb(204,204,204),d3.rgb(1,1,1)],svg,all_chrom,colorScaleedges,colorScaleedges2,communities; |
|
function Create_chr_circle(b,e,c){svg=d3.select("#chart").append("svg").attr("id","mainplot").attr("width",width).attr("height",height).append("g").attr("transform","translate("+width/2+","+height/2+")");all_chrom=Genome();all_chrom.set_zoom(b,e,c);allNodes=[];data_weight_pvalue=[];svg.selectAll("path").data(all_chrom.chromosomes()).enter().append("path").attr("class","ring").style("fill",function(a){return chromColor[a.index]}).style("stroke",function(a){return chromColor[a.index]}).attr("d",d3.svg.arc().innerRadius(chromRingInnerRadius).outerRadius(chromRingOuterRadius).startAngle(function(a){return a.startAngle}).endAngle(function(a){return a.endAngle})); |
|
svg.selectAll("text").data(all_chrom.chromosomes()).enter().append("text").attr("class","ring").attr("transform",function(a){a=(a.startAngle+a.endAngle)/2;return a<Math.PI?"rotate("+degrees(a)+")translate("+(chromRingInnerRadius+3)+")":"rotate("+degrees(a)+")translate("+(chromRingInnerRadius+3)+")rotate(180)translate(-13)"}).style("opacity",function(a){if(a.index+1!=b&&0!=b)return 0}).text(function(a){return a.index+1});e=svg.append("g").selectAll("g").data(all_chrom.chromosomes()).enter().append("g").selectAll("g").data(groupTicks).enter().append("g").attr("transform", |
|
function(a){return"rotate("+(180*a.angle/Math.PI-90)+")translate("+chromRingOuterRadius+",0)"});e.append("line").attr("x1",1).attr("y1",0).attr("x2",5).attr("y2",0).style("opacity",function(a){if(a.index+1!=b&&0!=b)return 0}).style("stroke","#000");e.append("text").attr("x",8).attr("dy",".35em").attr("font-size","10").attr("text-anchor",function(a){return a.angle>Math.PI?"end":null}).attr("transform",function(a){return a.angle>Math.PI?"rotate(180)translate(-16)":null}).style("opacity",function(a){if(a.index+ |
|
1!=b&&0!=b)return 0}).text(function(a){return a.label})} |
|
function Create_SNP_association(b){d3.json(b,function(b){links=b.links;communities=b.communities;b.nodes.forEach(function(a){allNodes.push(a)});svg.selectAll("path.vertex").data(allNodes).enter().append("path").attr("class","vertex").style("fill",function(a){return chromColor[a.chrom-1]}).style("stroke",function(a){return chromColor[a.chrom-1]}).attr("d",d3.svg.arc().innerRadius(chromRingInnerRadius-10).outerRadius(chromRingInnerRadius-3).startAngle(function(a){return all_chrom.getAngle(a.chrom,a.bp_position)- |
|
0.001}).endAngle(function(a){return all_chrom.getAngle(a.chrom,a.bp_position)+0.001}));svg.selectAll("circle.vertex").data(allNodes).enter().append("circle").attr("class","vertex").style("fill",function(a){return graphColor(a.probe_group)}).style("stroke",function(a){return graphColor(a.probe_group)}).attr("cx",chromRingInnerRadius-20).attr("r",3).on("click",function(a,b){var c=prompt("\n1) ClinVar\n2) dbSNP\n3) Ensembl\n4) PheGenI\n5) OMIM\n6) openSNP\n7) SNPedia\n8) UCSC");null!=c&&("8"==c?html= |
|
"http://genome.ucsc.edu/cgi-bin/hgTracks?org=human&db=hg19&position=chr"+allNodes[b].chrom+":"+(allNodes[b].bp_position-1E3)+"-"+(allNodes[b].bp_position+1E3):"6"==c?html="http://opensnp.org/snps/"+allNodes[b].rs:"2"==c?html="http://www.ncbi.nlm.nih.gov/SNP/snp_ref.cgi?rs="+allNodes[b].rs.substring(2):"4"==c?html="http://www.ncbi.nlm.nih.gov/gap/phegeni?tab=2&rs="+allNodes[b].rs.substring(2):"3"==c?html="http://www.ensembl.org/Homo_sapiens/Variation/Summary?r="+allNodes[b].chrom+":"+(allNodes[b].bp_position- |
|
1E3)+"-"+(allNodes[b].bp_position+1E3)+";source=dbSNP;v=rs"+allNodes[b].rs.substring(2)+";vdb=variation":"7"==c?html="http://www.snpedia.com/index.php/Rs"+allNodes[b].rs.substring(2):"5"==c?html="http://omim.org/search?index=entry&search=rs"+allNodes[b].rs.substring(2):"1"==c&&(html="http://www.ncbi.nlm.nih.gov/clinvar?term=rs"+allNodes[b].rs.substring(2)),window.open(html))}).attr("transform",function(a){return"rotate("+degrees(all_chrom.getAngle(a.chrom,a.bp_position))+")"});svg.selectAll("g circle").append("title").text(function(a){return"degree: "+ |
|
two_dec(a.degree)+"\nSNP: "+a.rs+"\nprobe_group: "+a.probe_group+"\nposition: "+a.bp_position});if("yes"===use_communities){var c=d3.range(d3.min(links,function(a){return n_edgs_in_comm(a.assoc_group,communities)}),101);colorScaleedges=d3.scale.log().domain([d3.min(links,function(a){return n_edgs_in_comm(a.assoc_group,communities)}),100]).interpolate(d3.interpolateHsl).range(["#3192C9","#FF7000"]);colorScaleedges2=d3.scale.linear().domain([d3.min(links,function(a){return n_edgs_in_comm(a.assoc_group, |
|
communities)}),100]).interpolate(d3.interpolateHsl).range(["#3192C9","#FF7000"]);b=d3.select("#scale_bar_c").append("svg").attr("width",500).attr("height",65).append("g").attr("transform","translate(10,5)");b.selectAll("rect").data(c).enter().append("rect").attr("x",function(a,b){return 440/c.length*b}).attr("y",0).attr("width",440/c.length-0).attr("height",15).style("opacity",0.8).attr("fill",function(a,b){return colorScaleedges2(a)});b.selectAll(".text_scb").data(c).enter().append("text").attr("class", |
|
"text_scb").text(function(a){switch(a){case 1:return 1;case 25:return 5;case 50:return 10;case 75:return 50;case 100:return">100"}}).attr("x",function(a,b){return 440/c.length*b}).attr("y",40).attr("font-family","sans-serif").attr("font-size","17.5px").style("opacity",0.8).style("font-weight","bold").attr("fill",function(a){switch(a){case 1:return colorScaleedges(1);case 25:return colorScaleedges(5);case 50:return colorScaleedges(10);case 75:return colorScaleedges(50);case 100:return colorScaleedges(101)}})}svg.selectAll("path.link").data(links).enter().append("path").attr("class", |
|
"link").style("stroke",function(a){return"yes"===use_communities?100<=n_edgs_in_comm(a.assoc_group,communities)?colorScaleedges(100):colorScaleedges(n_edgs_in_comm(a.assoc_group,communities)):graphColor(a.probe_group)}).style("stroke-width",1).style("opacity",0.7).style("fill","none").attr("d",link()).on("click",function(a,b){return highlight_snp_pairs(a,b,0)});d3.select("#snps").selectAll("p").data(allNodes).enter().append("p").append("link").attr("href",function(a){return"http://genome.ucsc.edu/cgi-bin/hgTracks?org=human&db=hg19&position=chr"+ |
|
a.chrom+":"+(a.bp_position-1E3)+"-"+(a.bp_position+1E3)}).attr("target","_blank").style("text-decoration","none").style("color","#000").text(function(a){return showSnp(a)})})}function showSnp(b){return"id:"+b.id+" chr"+b.chrom+":"+b.bp_position+" "+b.rs+" Subgraph:"+b.probe_group}function degrees(b){return b/Math.PI*180-90} |
|
function tickValues(b,e){return 5E4>b.endBase-b.startBase?Math.round(b.startBase+e/b.radPerBase):5E7>b.endBase-b.startBase?Math.round((b.startBase+e/b.radPerBase)/1E3)+"Kb":Math.round((b.startBase+e/b.radPerBase)/1E6)+"Mb"}function groupTicks(b){return d3.range(0,b.totAngle,0.041).map(function(e,c){return{angle:e+b.startAngle,label:c%2?null:tickValues(b,e),index:b.index}})} |
|
function link(){var b=chromRingInnerRadius-22;return function(e){var c=all_chrom.getAngle(allNodes[e.source].chrom,allNodes[e.source].bp_position),a=all_chrom.getAngle(allNodes[e.target].chrom,allNodes[e.target].bp_position),d=b*(0.1*Math.min(allNodes[e.source].probe_group,9)-0.1);e=Math.sin(c)*b;var h=-Math.cos(c)*b,f=Math.sin(a)*b,g=-Math.cos(a)*b,k=Math.sin(c)*d,c=-Math.cos(c)*d,m=Math.sin(a)*d,a=-Math.cos(a)*d;return"M"+e+","+h+"C"+k+","+c+" "+m+","+a+" "+f+","+g}} |
|
function fade(b){return function(e,c){svg.selectAll("g circle").filter(function(a){return a.probe_group!=allNodes[c].probe_group}).transition().style("opacity",b);svg.selectAll("g circle").filter(function(a){return a.probe_group===allNodes[c].probe_group}).append("title").text(function(a){return"degree: "+two_dec(a.degree)});svg.selectAll(".link").filter(function(a){return a.probe_group!=allNodes[c].probe_group}).remove();d3.select("#snps").selectAll("p").remove();d3.select("#pairs").selectAll("p").remove(); |
|
d3.select("#snps").selectAll("p").data(allNodes).enter().append("p").filter(function(a){return a.probe_group===allNodes[c].probe_group}).append("link").attr("href",function(a){return"http://genome.ucsc.edu/cgi-bin/hgTracks?org=human&db=hg19&position=chr"+a.chrom+":"+(a.bp_position-1E3)+"-"+(a.bp_position+1E3)}).attr("target","_blank").style("text-decoration","none").style("color",function(a){return a.id!=allNodes[c].id?"black":graphColor(a.probe_group)}).text(function(a){return showSnp(a)});d3.select("#pairs").selectAll("p").data(links).enter().append("p").filter(function(a){return a.probe_group=== |
|
allNodes[c].probe_group}).text(function(a){return showInteract(a)})}};function Genome(){function b(){var b,c,e;a=[];b=0;for(e=-1;++e<d;)b+=chromLength[e];b=(2*Math.PI-h*d)/b;c=0;for(e=-1;++e<d;)a0=c,a1=c+=chromLength[e]*b,a[e]={index:e,startAngle:a0,endAngle:a1,startBase:0,endBase:chromLength[e],radPerBase:b,totAngle:chromLength[e]*b},c+=h}function e(){var b;a=[];for(b=-1;++b<d;)b==k-1?(a[b]={index:k-1,startAngle:1.5*f+2*h,endAngle:2*Math.PI-1.5*f-2*h,startBase:m,endBase:n,radPerBase:(2*Math.PI-4*h-3*f)/(n-m),totAngle:2*Math.PI-4*h-3*f},a[d]={index:k-1,startAngle:0.5* |
|
f+h,endAngle:1.5*f+h,startBase:0,endBase:m,radPerBase:f/m,totAngle:f},a[d+1]={index:k-1,startAngle:2*Math.PI-1.5*f-h,endAngle:2*Math.PI-0.5*f-h,startBase:n,endBase:chromLength[b],radPerBase:f/(chromLength[b]-n),totAngle:f}):a[b]={index:d,startAngle:-0.5*f,endAngle:0.5*f,startBase:0,endBase:chromLength[b],radPerBase:f/chromLength[b],totAngle:f}}var c={},a,d=24,h=0.05,f=0.1,g=0,k=0,m=0,n=0;c.set_zoom=function(a,c,d){k=a;m=c;n=d;0==k?(g=0,b()):(g=1,e())};c.chromosomes=function(){a||(0==g?b():e());return a}; |
|
c.getAngle=function(c,f){a||(0==g?b():e());return circ_loc=c!=k?a[c-1].startAngle+(f-a[c-1].startBase)*a[c-1].radPerBase:f<m?a[d].startAngle+(f-a[d].startBase)*a[d].radPerBase:f>n?a[d+1].startAngle+(f-a[d+1].startBase)*a[d+1].radPerBase:a[c-1].startAngle+(f-a[c-1].startBase)*a[c-1].radPerBase};return c};var st_chosen_colourscale1,st_chosen_colourscale2,select_dropbox_scale1,select_dropbox_scale2; |
|
function start_heat_map(b){file_json=b;d3.select("#load_data").remove();d3.select("#hds_matrix").selectAll("svg").remove();d3.select("#hds_matrix").selectAll("svg").remove();d3.select("#table_snps").selectAll("table").remove();d3.select("#chart").selectAll("svg").remove();d3.select("#minmap_matrixp").selectAll("svg").remove();d3.select("#container_matrix").remove();create_stat_container_mat();load_stat_value_mat(file_json);read_file_to_matrix_plot(file_json);histogram_degree_SNPs(file_json,0);show_snp_pairs_list(file_json, |
|
st_chosen_colourscale1,0)}function zoom_heatmap(b){file_json=b;d3.select("#chart").selectAll("svg").remove();d3.select("#minmap_matrixp").selectAll("svg").remove();d3.select("#container_matrix").remove();create_stat_container_mat();load_stat_value_mat(file_json);histogram_degree_SNPs(file_json,0);show_snp_pairs_list(file_json,st_chosen_colourscale1,0);mx_1?(matrix_plot(mx_1,mx_2,my_1,my_2),matrix_plot_minmap(mix_1,mix_2,miy_1,miy_2,mx_1,my_1,mx_2-mx_1,my_2)):matrix_plot(mix_1,mix_2,miy_1,miy_2)} |
|
function load_stat_value_mat(b){data_weight_pvalue=[];statOptions=[];d3.json(b,function(e){links=e.links;for(var c in e.links[0])"assoc_group"!=c&&"source"!=c&&"target"!=c&&"probe_group"!=c&&"ct_id"!=c&&(statOptions[c]=c,st_1.push(c));st_chosen_colourscale1=st_1[0];st_chosen_colourscale2=st_1[0];show_snp_pairs_list(b,st_chosen_colourscale1,0,0);creat_drop_box_man("drop_sort");creat_drop_box_man("scalecolor1_dropbox");creat_drop_box_man("scalecolor2_dropbox")})} |
|
function creat_drop_box_man(b){d3.select("#"+b).selectAll("select").remove();switch(b){case "st_select_snp_pairs":select_dropbox_sort=d3.select("#"+b).append("select").attr("id","drop_sort");select_dropbox_sort.selectAll("option").data(d3.keys(statOptions)).enter().append("option").text(function(b){return b});select_dropbox.selectAll("option").data(d3.values(statOptions)).attr("value",function(b){return b});d3.select("#drop_sort").on("change",function(){st_chosen=this.value;d3.select("#pairs").selectAll("p").remove(); |
|
show_snp_pairs_list(file_json,st_chosen,0,0)});break;case "scalecolor1_dropbox":select_dropbox_scale1=d3.select("#"+b).append("select").attr("id","colour_scale1");select_dropbox_scale1.selectAll("option").data(d3.keys(statOptions)).enter().append("option").text(function(b){return b});select_dropbox_scale1.selectAll("option").data(d3.values(statOptions)).attr("value",function(b){return b});d3.select("#colour_scale1").on("change",function(){st_chosen_colourscale1=this.value;d3.select("#scalecolor_matrix1").selectAll("svg").remove(); |
|
d3.select("#scalecolor_matrix2").selectAll("svg").remove();d3.select("#minmap_matrixp").selectAll("svg").remove();d3.select("#chart").selectAll("svg").remove();read_file_to_matrix_plot(file_json)});break;case "scalecolor2_dropbox":select_dropbox_scale2=d3.select("#"+b).append("select").attr("id","colour_scale2"),select_dropbox_scale2.selectAll("option").data(d3.keys(statOptions)).enter().append("option").text(function(b){return b}),select_dropbox_scale2.selectAll("option").data(d3.values(statOptions)).attr("value", |
|
function(b){return b}),d3.select("#colour_scale2").on("change",function(){st_chosen_colourscale2=this.value;d3.select("#scalecolor_matrix1").selectAll("svg").remove();d3.select("#scalecolor_matrix2").selectAll("svg").remove();d3.select("#minmap_matrixp").selectAll("svg").remove();d3.select("#chart").selectAll("svg").remove();read_file_to_matrix_plot(file_json)})}} |
|
function create_stat_container_mat(){var b=d3.select("#container").append("div").attr("id","container_matrix");b.append("h5").attr("id","up").text("Upper Right");b.append("div").attr("id","scalecolor1_dropbox");b.append("h5").attr("id","ll").text("Lower Left");b.append("div").attr("id","scalecolor2_dropbox");b.append("div").attr("id","scalecolor_matrix1");b.append("div").attr("id","scalecolor_matrix2")};var data_obj_m=[],array_SNPs=[]; |
|
function read_file_to_matrix_plot(b){allNodes=[];var e={},c=0;data_obj_m=[];array_SNPs=[];d3.json(b,function(a){a.nodes.forEach(function(a){allNodes.push(a);array_SNPs.push("chr"+a.chrom+":"+a.bp_position);e["chr"+a.chrom+":"+a.bp_position]=c;c++});a.links.forEach(function(a){var b={},c;a.source>a.target&&(c=a.target,a.target=a.source,a.source=c);b.label_x=e["chr"+allNodes[a.source].chrom+":"+allNodes[a.source].bp_position];b.label_y=e["chr"+allNodes[a.target].chrom+":"+allNodes[a.target].bp_position]; |
|
for(var g in a)"assoc_group"!=g&&"ct_id"!=g&&"source"!=g&&"target"!=g&&"probe_group"!=g&&(b[g]=a[g]);data_obj_m.push(b)});mix_1=0;mix_2=array_SNPs.length-1;miy_1=0;miy_2=array_SNPs.length-1;matrix_plot_minmap(mix_1,mix_2,miy_1,miy_2,0,0,0,0);matrix_plot(mix_1,mix_2,miy_1,miy_2)})} |
|
function matrix_plot(b,e,c,a){function d(a,b){for(var c=[],d=a;d<=b;d+=b/(100*b))c.push(d);return c}var h=d(d3.round(d3.min(data_obj_m,function(a){return a[st_chosen_colourscale1]})),d3.round(d3.max(data_obj_m,function(a){return a[st_chosen_colourscale1]}))),f=d(d3.round(d3.min(data_obj_m,function(a){return a[st_chosen_colourscale2]})),d3.round(d3.max(data_obj_m,function(a){return a[st_chosen_colourscale2]}))),g=d3.scale.linear().domain([d3.min(data_obj_m,function(a){return a[st_chosen_colourscale1]}), |
|
d3.max(data_obj_m,function(a){return a[st_chosen_colourscale1]})]).interpolate(d3.interpolateHsl).range(["#E4DB00","#F31300"]),k=d3.scale.linear().domain([d3.min(data_obj_m,function(a){return a[st_chosen_colourscale2]}),d3.max(data_obj_m,function(a){return a[st_chosen_colourscale2]})]).interpolate(d3.interpolateHsl).range(["#00E4DB","#2E00E7"]),m=d3.select("#scalecolor_matrix1").append("svg").attr("width",500).attr("height",65).append("g").attr("transform","translate(10,5)");m.selectAll("rect").data(h).enter().append("rect").attr("x", |
|
function(a,b){return 450/h.length*b}).attr("y",0).attr("width",450/h.length-0).attr("height",25).attr("fill",function(a,b){return g(a)});m.selectAll(".text_smp").data(h).enter().append("text").attr("class","text_smp").text(function(a,b){number_tick=6;ld=h.length;ad=[0,ld/4,ld/2,ld/2+ld/4,ld-1];for(v in ad)if(b==d3.round(ad[v]))return two_dec(a)}).attr("x",function(a,b){return 450/h.length*(b+0)}).attr("y",40).attr("font-family","sans-serif").attr("font-size","15px").attr("fill",function(a){return g(a)}); |
|
m=d3.select("#scalecolor_matrix2").append("svg").attr("width",500).attr("height",65).append("g").attr("transform","translate(10,5)");m.selectAll("rect").data(f).enter().append("rect").attr("x",function(a,b){return 450/f.length*b}).attr("y",0).attr("width",450/f.length-0).attr("height",25).attr("fill",function(a,b){return k(a)});m.selectAll(".text_smp").data(f).enter().append("text").attr("class","text_smp").text(function(a,b){number_tick=6;ld=f.length;ad=[0,ld/4,ld/2,ld/2+ld/4,ld-1];for(v in ad)if(b== |
|
d3.round(ad[v]))return two_dec(a)}).attr("x",function(a,b){return 450/f.length*(b+0)}).attr("y",40).attr("font-family","sans-serif").attr("font-size","15px").attr("fill",function(a){return k(a)});var n=d3.scale.linear().domain([b,e]).range([0,600]),q=d3.scale.linear().domain([c,a]).range([0,600]);d3.scale.ordinal().domain([0,600]).range(array_SNPs);d3.scale.ordinal().domain([0,600]).range(array_SNPs);b=d3.svg.axis().scale(n).orient("top");e=d3.svg.axis().scale(q).orient("left");c=d3.svg.axis().scale(n).orient("bottom"); |
|
a=d3.svg.axis().scale(q).orient("right");var p=d3.select("#chart").append("svg").attr("width",700).attr("height",700).append("g").attr("transform","translate(50,50)");p.selectAll("path1").data(data_obj_m).enter().append("svg:path").style("fill",function(a){return k(a[st_chosen_colourscale2])}).attr("transform",function(a){return"translate("+n(a.label_x)+","+q(a.label_y)+")"}).attr("d",d3.svg.symbol().type("square").size("30"));p.selectAll("path2").data(data_obj_m).enter().append("svg:path").style("fill", |
|
function(a){return g(a[st_chosen_colourscale1])}).attr("transform",function(a){return"translate("+n(a.label_y)+","+q(a.label_x)+")"}).attr("d",d3.svg.symbol().type("square").size("30"));p.append("g").attr("class","xmataxis").call(b).append("text").attr("class","label").attr("x",500).attr("y",-30).attr("font-size","17px").style("text-anchor","end").text("SNP id");p.append("g").attr("class","ymataxis").call(e).append("text").attr("class","label").attr("transform","rotate(-90)").attr("x",-400).attr("y", |
|
-45).attr("dy",".71em").attr("font-size","17px").style("text-anchor","end").text("SNP id");p.append("g").attr("class","xmataxis").attr("transform","translate(0,600)").call(c);p.append("g").attr("class","ymataxis").attr("transform","translate(600,0)").call(a);p.append("g").attr("class","brush").call(d3.svg.brush().x(n).y(q).on("brushstart",function(){p.classed("selecting",!0)}).on("brush",function(){var a=d3.event.target.extent();mx_1=a[0][0];mx_2=a[1][0];my_1=a[0][1];my_2=a[1][1];d3.select("#two_weight_value_test").selectAll("h").remove(); |
|
d3.select("#two_weight_value_test").selectAll("h").data([1]).enter().append("h").text(mx_1+" - "+mx_2+" - "+my_1+" - "+my_2)}).on("brushend",function(){p.classed("selecting",!d3.event.target.empty())}))} |
|
function matrix_plot_minmap(b,e,c,a,d,h,f,g){var k=d3.scale.linear().domain([b,e]).range([0,250]),m=d3.scale.linear().domain([c,a]).range([0,250]);d3.scale.ordinal().domain([0,250]).range(array_SNPs);d3.scale.ordinal().domain([0,250]).range(array_SNPs);b=d3.svg.axis().scale(k).orient("top");e=d3.svg.axis().scale(m).orient("left");c=d3.svg.axis().scale(k).orient("bottom");a=d3.svg.axis().scale(m).orient("right");var n=d3.select("#minmap_matrixp").append("svg").attr("width",450).attr("height",450).append("g").attr("transform", |
|
"translate(100,100)"),q=d3.scale.linear().domain([d3.min(data_obj_m,function(a){return a[st_chosen_colourscale1]}),d3.max(data_obj_m,function(a){return a[st_chosen_colourscale1]})]).interpolate(d3.interpolateHsl).range(["#E4DB00","#F31300"]),p=d3.scale.linear().domain([d3.min(data_obj_m,function(a){return a[st_chosen_colourscale2]}),d3.max(data_obj_m,function(a){return a[st_chosen_colourscale2]})]).interpolate(d3.interpolateHsl).range(["#00E4DB","#2E00E7"]);n.selectAll("path1").data(data_obj_m).enter().append("svg:path").style("fill", |
|
function(a){return p(a[st_chosen_colourscale2])}).attr("transform",function(a){return"translate("+k(a.label_x)+","+m(a.label_y)+")"}).attr("d",d3.svg.symbol().type("square").size("5"));n.selectAll("path2").data(data_obj_m).enter().append("svg:path").style("fill",function(a){return q(a[st_chosen_colourscale1])}).attr("transform",function(a){return"translate("+k(a.label_y)+","+m(a.label_x)+")"}).attr("d",d3.svg.symbol().type("square").size("5"));0!=d&&0!=h&&0!=f&&0!=g&&n.selectAll("rect").data([0]).enter().append("rect").attr("x", |
|
k(d)).attr("y",m(h)).attr("width",k(f)).attr("height",m(g)-m(h)).attr("fill","rgba(255, 0, 0, 0.1)").attr("stroke","rgba(255, 0, 0, 1)").attr("stroke-width","5");n.append("g").attr("class","xmataxis").attr("transform","translate(0,0)").call(b);n.selectAll(".xmataxis text").attr("transform",function(a){return"translate("+1*this.getBBox().height+","+-1.5*this.getBBox().height+")rotate(-90)"});n.append("g").attr("class","ymataxis").call(e).append("text").attr("class","label").attr("transform","rotate(-90)").attr("x", |
|
-75).attr("y",-55).attr("dy",".71em").attr("font-size","17px").style("text-anchor","end").text("SNP id");n.append("g").attr("class","xmataxis2").attr("transform","translate(0,250)").call(c);n.selectAll(".xmataxis2 text").attr("transform",function(a){return"translate("+1*this.getBBox().height+","+1.5*this.getBBox().height+")rotate(90)"});n.append("g").attr("class","ymataxis").attr("transform","translate(250,0)").call(a)};var ix_1,ix_2,iy_1,iy_2,x_1,x_2,y_1,y_2;function start_manhattan_plot(b){file_json=b;d3.select("#hds_matrix").selectAll("svg").remove();d3.select("#table_snps").selectAll("table").remove();d3.select("#load_data").remove();create_container_manhattan();create_label_button();load_stat_value(file_json);read_file_to_manhattan_plot(file_json);histogram_degree_SNPs(file_json,0);show_snp_pairs_list(file_json,st_chosen,0)} |
|
function zoom_manhattan(b){"no"===data_from_HDS?(d3.select("#chart").selectAll("svg").remove(),d3.select("#scale_bar").selectAll("svg").remove(),x_1?(manhattan_plot(x_1,x_2,y_1,y_2,data),d3.select("#minmap_mp").selectAll("svg").remove(),manhattan_plot_minmap(ix_1,ix_2,iy_1,iy_2,x_1,y_2,x_2-x_1,y_1,data)):manhattan_plot(ix_1,ix_2,iy_1,iy_2,data)):(d3.select("#chart").selectAll("svg").remove(),d3.select("#scale_bar").selectAll("svg").remove(),x_1?(manhattan_plot(x_1,x_2,y_1,y_2,data_select_from_HDS), |
|
d3.select("#minmap_mp").selectAll("svg").remove(),manhattan_plot_minmap(ix_1,ix_2,iy_1,iy_2,x_1,y_2,x_2-x_1,y_1,data_select_from_HDS)):manhattan_plot(ix_1,ix_2,iy_1,iy_2,data_select_from_HDS))} |
|
function reset_manhattan(){create_container_manhattan();create_label_button();"no"==data_from_HDS;x_1=ix_1;x_2=ix_2;y_1=iy_1;y_2=iy_2;"no"===data_from_HDS?(manhattan_plot(ix_1,ix_2,iy_1,iy_2,data),manhattan_plot_minmap(ix_1,ix_2,iy_1,iy_2,0,0,0,0,data)):(manhattan_plot(ix_1,ix_2,iy_1,iy_2,data_select_from_HDS),manhattan_plot_minmap(ix_1,ix_2,iy_1,iy_2,0,0,0,0,data_select_from_HDS))} |
|
function create_label_button(){d3.select("#butpl").remove();d3.select("#butrl").remove();d3.select("#control_buttons").append("button").attr("type","button").attr("id","butpl").attr("name","but_put_label").text("label").on("click",function(){d3.select("#chart").selectAll("svg").remove();d3.select("#scale_bar").selectAll("svg").remove();d3.select("#minmap_mp").selectAll("svg").remove();"no"===data_from_HDS?(x_1?manhattan_plot(x_1,x_2,y_1,y_2,data):manhattan_plot(ix_1,ix_2,iy_1,iy_2,data),manhattan_plot_minmap(ix_1, |
|
ix_2,iy_1,iy_2,x_1,y_2,x_2-x_1,y_1,data)):(x_1?manhattan_plot(x_1,x_2,y_1,y_2,data_select_from_HDS):manhattan_plot(ix_1,ix_2,iy_1,iy_2,data_select_from_HDS),manhattan_plot_minmap(ix_1,ix_2,iy_1,iy_2,x_1,y_2,x_2-x_1,y_1,data_select_from_HDS));label_text.transition().style("opacity",1)});d3.select("#control_buttons").append("button").attr("type","button").attr("id","butrl").attr("name","but_put_label").text("remove_label").on("click",function(){d3.select("#chart").selectAll("svg").remove();d3.select("#scale_bar").selectAll("svg").remove(); |
|
d3.select("#minmap_mp").selectAll("svg").remove();"no"===data_from_HDS?(x_1?manhattan_plot(x_1,x_2,y_1,y_2,data):manhattan_plot(ix_1,ix_2,iy_1,iy_2,data),manhattan_plot_minmap(ix_1,ix_2,iy_1,iy_2,x_1,y_2,x_2-x_1,y_1,data)):(x_1?manhattan_plot(x_1,x_2,y_1,y_2,data_select_from_HDS):manhattan_plot(ix_1,ix_2,iy_1,iy_2,data_select_from_HDS),manhattan_plot_minmap(ix_1,ix_2,iy_1,iy_2,x_1,y_2,x_2-x_1,y_1,data_select_from_HDS));label_text.transition().style("opacity",0)})} |
|
function create_container_manhattan(){d3.select("#scale_bar").remove();d3.select("#container").append("div").attr("id","scale_bar")};for(var chrom_lenght=0,chrom_acum_length=[],i=0;i<chromLength.length;i++)chrom_lenght+=chromLength[i],chrom_acum_length.push(chrom_lenght); |
|
function read_file_to_manhattan_plot(b){data=[];allNodes=[];var e=[];d3.json(b,function(b){b.nodes.forEach(function(a){allNodes.push(a)});b.links.forEach(function(a){e.push(a[st_chosen]);1===allNodes[a.source].chrom?data.push([allNodes[a.source].bp_position,a[st_chosen],allNodes[a.source].degree,"chr"+allNodes[a.source].chrom+":"+allNodes[a.source].bp_position]):data.push([allNodes[a.source].bp_position+chrom_acum_length[allNodes[a.source].chrom-2],a[st_chosen],allNodes[a.source].degree,"chr"+allNodes[a.source].chrom+ |
|
":"+allNodes[a.source].bp_position]);1===allNodes[a.target].chrom?data.push([allNodes[a.target].bp_position,a[st_chosen],allNodes[a.target].degree,"chr"+allNodes[a.target].chrom+":"+allNodes[a.target].bp_position]):data.push([allNodes[a.target].bp_position+chrom_acum_length[allNodes[a.target].chrom-2],a[st_chosen],allNodes[a.target].degree,"chr"+allNodes[a.target].chrom+":"+allNodes[a.target].bp_position])});b=d3.min(e,function(a){return a});var a=d3.max(e,function(a){return a}),d=0.05*(a-b);ix_1= |
|
0;ix_2=chrom_lenght;iy_1=b-d;iy_2=a+d;data_from_HDS="no";manhattan_plot_minmap(ix_1,ix_2,iy_1,iy_2,0,0,0,0,data);manhattan_plot(ix_1,ix_2,iy_1,iy_2,data)})} |
|
function manhattan_plot(b,e,c,a,d){var h=d3.range(d3.min(d,function(a){return a[2]}),d3.max(d,function(a){return a[2]})+1),f=d3.scale.log().domain([d3.min(d,function(a){return a[2]}),d3.max(d,function(a){return a[2]})]).interpolate(d3.interpolateHsl).range(["#00b300","#F50808"]),g=d3.select("#scale_bar").append("svg").attr("width",500).attr("height",65).append("g").attr("transform","translate(10,5)");g.selectAll("rect").data(h).enter().append("rect").attr("x",function(a,b){return 460/h.length*b}).attr("y", |
|
0).attr("width",460/h.length-0).attr("height",25).attr("fill",function(a,b){return f(a)});g.selectAll(".text_smp").data(h).enter().append("text").attr("class","text_smp").text(function(a){number_tick=6;if(0==a%d3.round(d3.max(d,function(a){return a[2]})/number_tick))return a}).attr("x",function(a,b){return 460/h.length*(b+0.5)}).attr("y",40).attr("font-family","sans-serif").attr("font-size","11px").attr("fill",function(a){return f(a)});var k=d3.scale.linear().domain([b,e]).range([0,690]),m=d3.scale.linear().domain([c, |
|
a]).range([550,0]);b=[""];e=[0];for(c=0;c<chrom_acum_length.length;c++)b.push("chr"+(c+1)),e.push(k(chrom_acum_length[c]));b=d3.scale.ordinal().domain(b).range(e);b=d3.svg.axis().scale(b).orient("top");e=d3.svg.axis().scale(k).orient("bottom").ticks(5);c=d3.svg.axis().scale(m).orient("left").ticks(5);var n=d3.select("#chart").append("svg").attr("width",800).attr("height",600).append("g").attr("transform","translate(60,30)");n.selectAll("line").data(chrom_acum_length).enter().append("line").attr("class", |
|
"linechrom").attr("x1",function(a){return k(a)}).attr("y1",0).attr("x2",function(a){return k(a)}).attr("y2",550).attr("stroke-width",1).attr("stroke-dasharray",5).style("stroke","black").style("opacity",0.2);var q=n.selectAll("circle").data(d).enter().append("circle").attr("cx",function(a){return k(a[0])}).attr("cy",function(a){return m(a[1])}).attr("r",3.5).style("fill",function(a){return f(a[2])});label_text=n.selectAll("text").data(d).enter().append("text").text(function(a){return a[3]+" ; "+a[1]+ |
|
" ; "+a[2]}).attr("x",function(a){return k(a[0])}).attr("y",function(a){return m(a[1])}).attr("font-family","sans-serif").attr("font-size","11px").style("fill",function(a){return f(a[2])});label_text.transition().duration(1E3).style("opacity",0);n.append("g").attr("class","manaxis").attr("font-size","10px").attr("transform","translate(0,550)").call(e).append("text").attr("class","manlabel").attr("x",690).attr("y",-6).style("text-anchor","end").attr("font-size","17px").text("Chromosome Lengths (n\u00ba bases)"); |
|
n.append("g").attr("transform","translate(0,0)").attr("class","xt axis").call(b);n.selectAll(".xt text").attr("transform",function(a){return"translate("+this.getBBox().height+","+-0.5*this.getBBox().height+")rotate(-45)"});n.append("g").attr("class","manaxis").call(c).append("text").attr("class","manlabel").attr("transform","rotate(-90)").attr("x",-10).attr("y",-50).attr("dy",".71em").style("text-anchor","end").attr("font-size","17px").text("-log(p-value)");n.append("g").attr("class","brush").call(d3.svg.brush().x(k).y(m).on("brushstart", |
|
function(){n.classed("selecting",!0)}).on("brush",function(){var a=d3.event.target.extent();q.classed("selected",function(b){return a[0][0]<=b[0]&&b[0]<=a[1][0]&&a[0][1]<=b[1]&&b[1]<=a[1][1]});x_1=a[0][0];x_2=a[1][0];y_1=a[0][1];y_2=a[1][1]}).on("brushend",function(){n.classed("selecting",!d3.event.target.empty())}))} |
|
function manhattan_plot_minmap(b,e,c,a,d,h,f,g,k){d3.range(d3.min(k,function(a){return a[2]}),d3.max(k,function(a){return a[2]})+1);var m=d3.scale.log().domain([d3.min(k,function(a){return a[2]}),d3.max(k,function(a){return a[2]})]).interpolate(d3.interpolateHsl).range(["#00b300","#F50808"]),n=d3.scale.linear().domain([b,e]).range([0,290]),q=d3.scale.linear().domain([c,a]).range([230,0]);b=[""];e=[0];for(c=0;c<chrom_acum_length.length;c++)b.push(c+1),e.push(n(chrom_acum_length[c]));b=d3.scale.ordinal().domain(b).range(e); |
|
b=d3.svg.axis().scale(b).orient("bottom");d3.svg.axis().scale(n).orient("bottom").ticks(5);e=d3.svg.axis().scale(q).orient("left").ticks(5);c=d3.select("#minmap_mp").append("svg").attr("width",400).attr("height",300).append("g").attr("transform","translate(60,30)");c.selectAll("line").data(chrom_acum_length).enter().append("line").attr("class","linechrom").attr("x1",function(a){return n(a)}).attr("y1",0).attr("x2",function(a){return n(a)}).attr("y2",230).attr("stroke-width",1).attr("stroke-dasharray", |
|
5).style("stroke","black").style("opacity",0.2);c.selectAll("circle").data(k).enter().append("circle").attr("cx",function(a){return n(a[0])}).attr("cy",function(a){return q(a[1])}).attr("r",1.5).style("fill",function(a){return m(a[2])});0!=d&&0!=h&&0!=f&&0!=g&&c.selectAll("rect").data([0]).enter().append("rect").attr("x",n(d)).attr("y",q(h)).attr("width",n(f)).attr("height",q(g)-q(h)).attr("fill","rgba(0, 0, 255, 0.1)").attr("stroke","rgba(0, 0, 255, 1)").attr("stroke-width","5");c.append("g").attr("transform", |
|
"translate(0,230)").attr("class","xt_min axis").call(b);c.selectAll(".xt_min text").attr("transform",function(a){return"translate("+1.4*this.getBBox().height+","+1.7*this.getBBox().height+")rotate(90)"});c.append("g").attr("class","axis").call(e)}; |