aboutsummaryrefslogtreecommitdiff
path: root/gn2/wqflask/static/new/javascript/compare_traits_scatterplot.js
blob: 5c0ef16c7f75d60d351c1617ac23038931ec8d9b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
// Generated by CoffeeScript 1.8.0
var root;

root = typeof exports !== "undefined" && exports !== null ? exports : this;

root.create_scatterplot = function(json_ids, json_data) {
  var data, h, halfh, halfw, indID, margin, mychart, totalh, totalw, w;
  console.log("TESTING2");
  h = 400;
  w = 500;
  margin = {
    left: 60,
    top: 40,
    right: 40,
    bottom: 40,
    inner: 5
  };
  halfh = h + margin.top + margin.bottom;
  totalh = halfh * 2;
  halfw = w + margin.left + margin.right;
  totalw = halfw * 2;
  mychart = scatterplot().xvar(0).yvar(1).xlab("X").ylab("Y").height(h).width(w).margin(margin);
  data = json_data;
  indID = json_ids;
  d3.select("div#comparison_scatterplot").datum({
    data: data,
    indID: indID
  }).call(mychart);
  return mychart.pointsSelect().on("mouseover", function(d) {
    return d3.select(this).attr("r", mychart.pointsize() * 3);
  }).on("mouseout", function(d) {
    return d3.select(this).attr("r", mychart.pointsize());
  });
};

root.create_scatterplots = function(trait_names, json_ids, json_data) {
  var brush, brushend, brushmove, brushstart, chart, data, h, halfh, halfw, i, indID, margin, mychart, num_traits, svg, totalh, totalw, w, xscale, xshift, xvar, yscale, yshift, yvar, _i, _j, _k, _ref, _ref1, _ref2, _results;
  console.log("json_data:", json_data);
  console.log("trait_names:", trait_names);
  num_traits = json_data.length;
  console.log("num_traits:", num_traits);
  h = 300;
  w = 400;
  margin = {
    left: 60,
    top: 40,
    right: 40,
    bottom: 40,
    inner: 5
  };
  halfh = h + margin.top + margin.bottom;
  totalh = halfh * (num_traits - 1);
  halfw = w + margin.left + margin.right;
  totalw = halfw;
  xvar = [];
  yvar = [];
  xshift = [];
  yshift = [];
  for (i = _i = 0, _ref = num_traits - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {
    xvar.push(i);
    yvar.push(0);
    xshift.push(0);
    yshift.push(halfh * i);
  }
  console.log("xvar:", xvar);
  console.log("yvar:", yvar);
  svg = d3.select("div#comparison_scatterplot").append("svg").attr("height", totalh).attr("width", totalw);
  mychart = [];
  chart = [];
  for (i = _j = 1, _ref1 = num_traits - 1; 1 <= _ref1 ? _j <= _ref1 : _j >= _ref1; i = 1 <= _ref1 ? ++_j : --_j) {
    mychart[i - 1] = scatterplot().xvar(xvar[i]).yvar(yvar[i]).nxticks(6).height(h).width(w).margin(margin).pointsize(4).xlab("" + trait_names[i - 1]).ylab("" + trait_names[0]).title("" + trait_names[0] + " vs. " + trait_names[i - 1]);
    data = json_data;
    indID = json_ids;
    chart[i - 1] = svg.append("g").attr("id", "chart" + (i - 1)).attr("transform", "translate(" + xshift[i] + "," + yshift[i - 1] + ")");
    chart[i - 1].datum({
      data: data,
      indID: indID
    }).call(mychart[i - 1]);
  }
  brush = [];
  brushstart = function(i) {
    return function() {
      var j, _k, _ref2;
      for (j = _k = 0, _ref2 = num_traits - 2; 0 <= _ref2 ? _k <= _ref2 : _k >= _ref2; j = 0 <= _ref2 ? ++_k : --_k) {
        if (j !== i) {
          chart[j].call(brush[j].clear());
        }
      }
      return svg.selectAll("circle").attr("opacity", 0.6).classed("selected", false);
    };
  };
  brushmove = function(i) {
    return function() {
      var e;
      svg.selectAll("circle").classed("selected", false);
      e = brush[i].extent();
      return chart[i].selectAll("circle").classed("selected", function(d, j) {
        var circ, cx, cy, selected;
        circ = d3.select(this);
        cx = circ.attr("cx");
        cy = circ.attr("cy");
        selected = e[0][0] <= cx && cx <= e[1][0] && e[0][1] <= cy && cy <= e[1][1];
        if (selected) {
          svg.selectAll("circle.pt" + j).classed("selected", true);
        }
        return selected;
      });
    };
  };
  brushend = function() {
    return svg.selectAll("circle").attr("opacity", 1);
  };
  xscale = d3.scale.linear().domain([margin.left, margin.left + w]).range([margin.left, margin.left + w]);
  yscale = d3.scale.linear().domain([margin.top, margin.top + h]).range([margin.top, margin.top + h]);
  _results = [];
  for (i = _k = 0, _ref2 = num_traits - 2; 0 <= _ref2 ? _k <= _ref2 : _k >= _ref2; i = 0 <= _ref2 ? ++_k : --_k) {
    brush[i] = d3.svg.brush().x(xscale).y(yscale).on("brushstart", brushstart(i)).on("brush", brushmove(i)).on("brushend", brushend);
    _results.push(chart[i].call(brush[i]));
  }
  return _results;
};