aboutsummaryrefslogtreecommitdiff
path: root/gn2/wqflask/static/new/javascript/chr_manhattan_plot.js
diff options
context:
space:
mode:
authorArun Isaac2023-12-29 18:55:37 +0000
committerArun Isaac2023-12-29 19:01:46 +0000
commit204a308be0f741726b9a620d88fbc22b22124c81 (patch)
treeb3cf66906674020b530c844c2bb4982c8a0e2d39 /gn2/wqflask/static/new/javascript/chr_manhattan_plot.js
parent83062c75442160427b50420161bfcae2c5c34c84 (diff)
downloadgenenetwork2-204a308be0f741726b9a620d88fbc22b22124c81.tar.gz
Namespace all modules under gn2.
We move all modules under a gn2 directory. This is important for "correct" packaging and deployment as a Guix service.
Diffstat (limited to 'gn2/wqflask/static/new/javascript/chr_manhattan_plot.js')
-rw-r--r--gn2/wqflask/static/new/javascript/chr_manhattan_plot.js273
1 files changed, 273 insertions, 0 deletions
diff --git a/gn2/wqflask/static/new/javascript/chr_manhattan_plot.js b/gn2/wqflask/static/new/javascript/chr_manhattan_plot.js
new file mode 100644
index 00000000..c661edc7
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/chr_manhattan_plot.js
@@ -0,0 +1,273 @@
+// Generated by CoffeeScript 1.8.0
+var Chr_Manhattan_Plot;
+
+Chr_Manhattan_Plot = (function() {
+ function Chr_Manhattan_Plot(plot_height, plot_width, chr, manhattanPlot) {
+ this.plot_height = plot_height;
+ this.plot_width = plot_width;
+ this.chr = chr;
+ this.qtl_results = js_data.qtl_results;
+ console.log("qtl_results are:", this.qtl_results);
+ console.log("chr is:", this.chr);
+ this.get_max_chr();
+ this.filter_qtl_results();
+ console.log("filtered results:", this.these_results);
+ this.get_qtl_count();
+ this.x_coords = [];
+ this.y_coords = [];
+ this.marker_names = [];
+ console.time('Create coordinates');
+ this.create_coordinates();
+ console.log("@x_coords: ", this.x_coords);
+ console.log("@y_coords: ", this.y_coords);
+ console.timeEnd('Create coordinates');
+ this.x_buffer = this.plot_width / 30;
+ this.y_buffer = this.plot_height / 20;
+ this.x_max = d3.max(this.x_coords);
+ this.y_max = d3.max(this.y_coords) * 1.2;
+ this.y_threshold = this.get_lod_threshold();
+ this.svg = this.create_svg();
+ this.plot_coordinates = _.zip(this.x_coords, this.y_coords, this.marker_names);
+ console.log("coordinates:", this.plot_coordinates);
+ this.plot_height -= this.y_buffer;
+ this.create_scales();
+ console.time('Create graph');
+ this.create_graph();
+ console.timeEnd('Create graph');
+ }
+
+ Chr_Manhattan_Plot.prototype.get_max_chr = function() {
+ var key, _results;
+ this.max_chr = 0;
+ _results = [];
+ for (key in js_data.chromosomes) {
+ console.log("key is:", key);
+ if (parseInt(key) > this.max_chr) {
+ _results.push(this.max_chr = parseInt(key));
+ } else {
+ _results.push(void 0);
+ }
+ }
+ return _results;
+ };
+
+ Chr_Manhattan_Plot.prototype.filter_qtl_results = function() {
+ var result, this_chr, _i, _len, _ref, _results;
+ this.these_results = [];
+ this_chr = 100;
+ _ref = this.qtl_results;
+ _results = [];
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ result = _ref[_i];
+ if (result.chr === "X") {
+ this_chr = this.max_chr;
+ } else {
+ this_chr = result.chr;
+ }
+ console.log("this_chr is:", this_chr);
+ console.log("@chr[0] is:", parseInt(this.chr[0]));
+ if (this_chr > parseInt(this.chr[0])) {
+ break;
+ }
+ if (parseInt(this_chr) === parseInt(this.chr[0])) {
+ _results.push(this.these_results.push(result));
+ } else {
+ _results.push(void 0);
+ }
+ }
+ return _results;
+ };
+
+ Chr_Manhattan_Plot.prototype.get_qtl_count = function() {
+ var high_qtl_count, result, _i, _len, _ref;
+ high_qtl_count = 0;
+ _ref = this.these_results;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ result = _ref[_i];
+ if (result.lod_score > 1) {
+ high_qtl_count += 1;
+ }
+ }
+ console.log("high_qtl_count:", high_qtl_count);
+ return this.y_axis_filter = 2;
+ };
+
+ Chr_Manhattan_Plot.prototype.create_coordinates = function() {
+ var result, _i, _len, _ref, _results;
+ _ref = this.these_results;
+ _results = [];
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ result = _ref[_i];
+ this.x_coords.push(parseFloat(result.Mb));
+ this.y_coords.push(result.lod_score);
+ _results.push(this.marker_names.push(result.name));
+ }
+ return _results;
+ };
+
+ Chr_Manhattan_Plot.prototype.create_svg = function() {
+ var svg;
+ svg = d3.select("#topchart").append("svg").attr("class", "chr_manhattan_plot").attr("width", this.plot_width + this.x_buffer).attr("height", this.plot_height + this.y_buffer).append("g");
+ return svg;
+ };
+
+ Chr_Manhattan_Plot.prototype.create_scales = function() {
+ this.x_scale = d3.scale.linear().domain([0, this.chr[1]]).range([this.x_buffer, this.plot_width]);
+ return this.y_scale = d3.scale.linear().domain([0, this.y_max]).range([this.plot_height, this.y_buffer]);
+ };
+
+ Chr_Manhattan_Plot.prototype.get_lod_threshold = function() {
+ if (this.y_max / 2 > 2) {
+ return this.y_max / 2;
+ } else {
+ return 2;
+ }
+ };
+
+ Chr_Manhattan_Plot.prototype.create_graph = function() {
+ this.add_border();
+ this.add_x_axis();
+ this.add_y_axis();
+ this.add_title();
+ this.add_back_button();
+ if (manhattanPlot) {
+ return this.add_plot_points();
+ } else {
+ return this.add_path();
+ }
+ };
+
+ Chr_Manhattan_Plot.prototype.add_border = function() {
+ var border_coords;
+ border_coords = [[this.y_buffer, this.plot_height, this.x_buffer, this.x_buffer], [this.y_buffer, this.plot_height, this.plot_width, this.plot_width], [this.y_buffer, this.y_buffer, this.x_buffer, this.plot_width], [this.plot_height, this.plot_height, this.x_buffer, this.plot_width]];
+ return this.svg.selectAll("line").data(border_coords).enter().append("line").attr("y1", (function(_this) {
+ return function(d) {
+ return d[0];
+ };
+ })(this)).attr("y2", (function(_this) {
+ return function(d) {
+ return d[1];
+ };
+ })(this)).attr("x1", (function(_this) {
+ return function(d) {
+ return d[2];
+ };
+ })(this)).attr("x2", (function(_this) {
+ return function(d) {
+ return d[3];
+ };
+ })(this)).style("stroke", "#000");
+ };
+
+ Chr_Manhattan_Plot.prototype.add_x_axis = function() {
+ this.xAxis = d3.svg.axis().scale(this.x_scale).orient("bottom").ticks(20);
+ this.xAxis.tickFormat((function(_this) {
+ return function(d) {
+ d3.format("d");
+ return d;
+ };
+ })(this));
+ return this.svg.append("g").attr("class", "x_axis").attr("transform", "translate(0," + this.plot_height + ")").call(this.xAxis).selectAll("text").attr("text-anchor", "right").attr("font-size", "12px").attr("dx", "-1.6em").attr("transform", (function(_this) {
+ return function(d) {
+ return "translate(-12,0) rotate(-90)";
+ };
+ })(this));
+ };
+
+ Chr_Manhattan_Plot.prototype.add_y_axis = function() {
+ this.yAxis = d3.svg.axis().scale(this.y_scale).orient("left").ticks(5);
+ return this.svg.append("g").attr("class", "y_axis").attr("transform", "translate(" + this.x_buffer + ",0)").call(this.yAxis);
+ };
+
+ Chr_Manhattan_Plot.prototype.add_title = function() {
+ return this.svg.append("text").attr("class", "title").text("Chr " + this.chr[0]).attr("x", (function(_this) {
+ return function(d) {
+ return (_this.plot_width + _this.x_buffer) / 2;
+ };
+ })(this)).attr("y", this.y_buffer + 20).attr("dx", "0em").attr("text-anchor", "middle").attr("font-family", "sans-serif").attr("font-size", "18px").attr("fill", "black");
+ };
+
+ Chr_Manhattan_Plot.prototype.add_back_button = function() {
+ return this.svg.append("text").attr("class", "back").text("Return to full view").attr("x", this.x_buffer * 2).attr("y", this.y_buffer / 2).attr("dx", "0em").attr("text-anchor", "middle").attr("font-family", "sans-serif").attr("font-size", "18px").attr("cursor", "pointer").attr("fill", "black").on("click", this.return_to_full_view);
+ };
+
+ Chr_Manhattan_Plot.prototype.add_path = function() {
+ var line_function, line_graph;
+ line_function = d3.svg.line().x((function(_this) {
+ return function(d) {
+ return _this.x_scale(d[0]);
+ };
+ })(this)).y((function(_this) {
+ return function(d) {
+ return _this.y_scale(d[1]);
+ };
+ })(this)).interpolate("linear");
+ return line_graph = this.svg.append("path").attr("d", line_function(this.plot_coordinates)).attr("stroke", "blue").attr("stroke-width", 1).attr("fill", "none");
+ };
+
+ Chr_Manhattan_Plot.prototype.add_plot_points = function() {
+ return this.plot_point = this.svg.selectAll("circle").data(this.plot_coordinates).enter().append("circle").attr("cx", (function(_this) {
+ return function(d) {
+ return _this.x_scale(d[0]);
+ };
+ })(this)).attr("cy", (function(_this) {
+ return function(d) {
+ return _this.y_scale(d[1]);
+ };
+ })(this)).attr("r", (function(_this) {
+ return function(d) {
+ return 2;
+ };
+ })(this)).attr("fill", (function(_this) {
+ return function(d) {
+ return "black";
+ };
+ })(this)).attr("stroke", "black").attr("stroke-width", "1").attr("id", (function(_this) {
+ return function(d) {
+ return "point_" + String(d[2]);
+ };
+ })(this)).classed("circle", true).on("mouseover", (function(_this) {
+ return function(d) {
+ var this_id;
+ console.log("d3.event is:", d3.event);
+ console.log("d is:", d);
+ this_id = "point_" + String(d[2]);
+ return d3.select("#" + this_id).classed("d3_highlight", true).attr("r", 5).attr("stroke", "none").attr("fill", "blue").call(_this.show_marker_in_table(d));
+ };
+ })(this)).on("mouseout", (function(_this) {
+ return function(d) {
+ var this_id;
+ this_id = "point_" + String(d[2]);
+ return d3.select("#" + this_id).classed("d3_highlight", false).attr("r", function(d) {
+ return 2;
+ }).attr("fill", function(d) {
+ return "black";
+ }).attr("stroke", "black").attr("stroke-width", "1");
+ };
+ })(this)).append("svg:title").text((function(_this) {
+ return function(d) {
+ return d[2];
+ };
+ })(this));
+ };
+
+ Chr_Manhattan_Plot.prototype.return_to_full_view = function() {
+ $('#topchart').remove();
+ $('#chart_container').append('<div class="qtlcharts" id="topchart"></div>');
+ return create_manhattan_plot();
+ };
+
+ Chr_Manhattan_Plot.prototype.show_marker_in_table = function(marker_info) {
+ var marker_name;
+ console.log("in show_marker_in_table");
+
+ /* Searches for the select marker in the results table below */
+ if (marker_info) {
+ marker_name = marker_info[2];
+ return $("#qtl_results_filter").find("input:first").val(marker_name).change();
+ }
+ };
+
+ return Chr_Manhattan_Plot;
+
+})();