aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZachary Sloan2013-12-30 20:22:14 +0000
committerZachary Sloan2013-12-30 20:22:14 +0000
commit127cbe756059dc95e3c37cb2783df5296bafc362 (patch)
tree09ab24c45446f3ea5f2e3cd635d13e35d1f73f7d
parent51f1049ef5a6b78f02f9fc44e970b80eb64603f1 (diff)
downloadgenenetwork2-127cbe756059dc95e3c37cb2783df5296bafc362.tar.gz
Fixed issue where box plots initially appeared below the bar chart
instead of in the second tab In the process of trying to fix the genofile to json parser so we can map Amelie's rat data In the process of having the color of bars in the bar chart "follow" them when they are resorted.
-rw-r--r--wqflask/wqflask/my_pylmm/data/genofile_parser.py14
-rw-r--r--wqflask/wqflask/static/new/javascript/bar_chart.coffee126
-rw-r--r--wqflask/wqflask/static/new/javascript/bar_chart.js55
-rw-r--r--wqflask/wqflask/templates/interval_mapping.html1
-rw-r--r--wqflask/wqflask/templates/show_trait_statistics_new.html2
5 files changed, 108 insertions, 90 deletions
diff --git a/wqflask/wqflask/my_pylmm/data/genofile_parser.py b/wqflask/wqflask/my_pylmm/data/genofile_parser.py
index 4a647959..af855fb4 100644
--- a/wqflask/wqflask/my_pylmm/data/genofile_parser.py
+++ b/wqflask/wqflask/my_pylmm/data/genofile_parser.py
@@ -93,12 +93,12 @@ class ConvertGenoFile(object):
this_marker = Marker()
this_marker.name = row_items[1]
this_marker.chr = row_items[0]
- this_marker.cM = row_items[2]
+ #this_marker.cM = row_items[2]
if self.mb_exists:
- this_marker.Mb = row_items[3]
- genotypes = row_items[4:]
- else:
+ this_marker.Mb = row_items[2]
genotypes = row_items[3:]
+ else:
+ genotypes = row_items[2:]
for item_count, genotype in enumerate(genotypes):
if genotype.upper() in self.configurations:
this_marker.genotypes.append(self.configurations[genotype.upper()])
@@ -186,8 +186,10 @@ if __name__=="__main__":
Old_Geno_Directory = """/home/zas1024/gene/web/genotypes/"""
New_Geno_Directory = """/home/zas1024/gene/web/new_genotypes/"""
#Input_File = """/home/zas1024/gene/web/genotypes/BXD.geno"""
- #Output_File = """/home/zas1024/gene/wqflask/wqflask/pylmm/data/bxd.snps"""
- ConvertGenoFile.process_all(Old_Geno_Directory, New_Geno_Directory)
+ #Output_File = """/home/zas1024/gene/wqflask/wqflask/pylmm/data/bxd.snps"""
+ convertob = ConvertGenoFile("/home/zas1024/gene/web/genotypes/HSNIH.geno.gz", "/home/zas1024/gene/web/new_genotypes/HSNIH.json")
+ convertob.convert()
+ #ConvertGenoFile.process_all(Old_Geno_Directory, New_Geno_Directory)
#ConvertGenoFiles(Geno_Directory)
#process_csv(Input_File, Output_File) \ No newline at end of file
diff --git a/wqflask/wqflask/static/new/javascript/bar_chart.coffee b/wqflask/wqflask/static/new/javascript/bar_chart.coffee
index e1bb36e1..27a8d284 100644
--- a/wqflask/wqflask/static/new/javascript/bar_chart.coffee
+++ b/wqflask/wqflask/static/new/javascript/bar_chart.coffee
@@ -129,83 +129,12 @@ class Bar_Chart
#$('.x.axis').remove()
#@add_x_axis(x_scale)
)
-
-
-
- #d3.select(".update_bar_chart").on("click", =>
- # console.log("THIS IS:", $(this))
- # sort_by = $(this).val()
- # console.log("sort_by: ", sort_by)
- # if @attributes.length > 0
- # attribute = $("#color_attribute").val()
- # if sort_by = "value"
- # console.log("sorting by value")
- # sortItems = (a, b) ->
- # return a[1] - b[1]
- #
- # @svg.selectAll(".bar")
- # .data(@sorted_samples())
- # .transition()
- # .duration(1000)
- # .attr("y", (d) =>
- #
- # return @y_scale(d[1])
- # )
- # .attr("height", (d) =>
- # return @plot_height - @y_scale(d[1])
- # )
- # .style("fill", (d) =>
- # if @attributes.length > 0
- # return @attr_color_dict[attribute][d[2][attribute]]
- # else
- # return "steelblue"
- # )
- # .select("title")
- # .text((d) =>
- # return d[1]
- # )
- # sorted_sample_names = (sample[0] for sample in @sorted_samples())
- # x_scale = d3.scale.ordinal()
- # .domain(sorted_sample_names)
- # .rangeBands([0, @plot_width], .1)
- # $('.x.axis').remove()
- # @add_x_axis(x_scale)
- # else
- # console.log("sorting by name")
- # #$("#update_bar_chart").html('Sort By Value')
- # @svg.selectAll(".bar")
- # .data(@samples)
- # .transition()
- # .duration(1000)
- # .attr("y", (d) =>
- # return @y_scale(d[1])
- # )
- # .attr("height", (d) =>
- # return @plot_height - @y_scale(d[1])
- # )
- # .style("fill", (d) =>
- # if @attributes.length > 0
- # return @attr_color_dict[attribute][d[2][attribute]]
- # else
- # return "steelblue"
- # )
- # .select("title")
- # .text((d) =>
- # return d[1]
- # )
- # x_scale = d3.scale.ordinal()
- # .domain(@sample_names)
- # .rangeBands([0, @plot_width], .1)
- # $('.x.axis').remove()
- # @add_x_axis(x_scale)
- #)
-
+
d3.select("#color_by_trait").on("click", =>
@open_trait_selection()
)
-
rebuild_bar_graph: (samples) ->
console.log("samples:", samples)
@svg.selectAll(".bar")
@@ -223,7 +152,11 @@ class Bar_Chart
return d[1]
)
.style("fill", (d) =>
- if @attributes.length > 0 and @attribute != "None"
+ if @attributes.length == 0
+ console.log("SAMPLE:", d[0])
+ console.log("CHECKING:", @trait_color_dict[d[0]])
+ return @trait_color_dict[d[0]]
+ else if @attributes.length > 0 and @attribute != "None"
console.log("@attribute:", @attribute)
console.log("d[2]", d[2])
console.log("the_color:", @attr_color_dict[@attribute][d[2][@attribute]])
@@ -231,6 +164,10 @@ class Bar_Chart
else
return "steelblue"
)
+ #.style("fill", (d) =>
+ # return @trait_color_dict[d[0]]
+ # #return @attr_color_dict["collection_trait"][trimmed_samples[d[0]]]
+ #)
sample_names = (sample[0] for sample in samples)
console.log("sample_names2:", sample_names)
x_scale = d3.scale.ordinal()
@@ -268,6 +205,35 @@ class Bar_Chart
#this_color_dict[value] = d3.rgb("lightblue").darker(color_range(parseInt(value)))
#this_color_dict[value] = "rgb(0, 0, " + color_range(parseInt(value)) + ")"
@attr_color_dict[key] = this_color_dict
+
+ get_trait_color_dict: (samples, vals) ->
+ @trait_color_dict = {}
+ console.log("vals:", vals)
+ for own key, distinct_vals of vals
+ this_color_dict = {}
+ if distinct_vals.length < 10
+ color = d3.scale.category10()
+ for value, i in distinct_vals
+ this_color_dict[value] = color(i)
+ else
+ console.log("distinct_values:", distinct_vals)
+ #Check whether all values are numbers, and if they are get a corresponding
+ #color gradient
+ if _.every(distinct_vals, (d) =>
+ if isNaN(d)
+ return false
+ else
+ return true
+ )
+ color_range = d3.scale.linear()
+ .domain([d3.min(distinct_vals),
+ d3.max(distinct_vals)])
+ .range([0,255])
+ for value, i in distinct_vals
+ console.log("color_range(value):", parseInt(color_range(value)))
+ this_color_dict[value] = d3.rgb(parseInt(color_range(value)),0, 0)
+ for own sample, value of samples
+ @trait_color_dict[sample] = this_color_dict[value]
convert_into_colors: (values) ->
color_range = d3.scale.linear()
@@ -450,14 +416,17 @@ class Bar_Chart
trimmed_samples = @trim_values(trait_sample_data)
distinct_values = {}
distinct_values["collection_trait"] = @get_distinct_values(trimmed_samples)
- @get_attr_color_dict(distinct_values)
+ #@get_attr_color_dict(distinct_values)
+ @get_trait_color_dict(trimmed_samples, distinct_values)
+ console.log("TRAIT_COLOR_DICT:", @trait_color_dict)
if $("#update_bar_chart").html() == 'Sort By Name'
@svg.selectAll(".bar")
.data(@sorted_samples())
.transition()
.duration(1000)
.style("fill", (d) =>
- return @attr_color_dict["collection_trait"][trimmed_samples[d[0]]]
+ return @trait_color_dict[d[0]]
+ #return @attr_color_dict["collection_trait"][trimmed_samples[d[0]]]
)
.select("title")
.text((d) =>
@@ -469,10 +438,11 @@ class Bar_Chart
.transition()
.duration(1000)
.style("fill", (d) =>
- return @attr_color_dict["collection_trait"][trimmed_samples[d[0]]]
+ return @trait_color_dict[d[0]]
+ #return @attr_color_dict["collection_trait"][trimmed_samples[d[0]]]
)
-
-
+
+
trim_values: (trait_sample_data) ->
trimmed_samples = {}
for sample in @sample_names
diff --git a/wqflask/wqflask/static/new/javascript/bar_chart.js b/wqflask/wqflask/static/new/javascript/bar_chart.js
index b02ee1da..faf66cd4 100644
--- a/wqflask/wqflask/static/new/javascript/bar_chart.js
+++ b/wqflask/wqflask/static/new/javascript/bar_chart.js
@@ -102,7 +102,11 @@
}).select("title").text(function(d) {
return d[1];
}).style("fill", function(d) {
- if (_this.attributes.length > 0 && _this.attribute !== "None") {
+ if (_this.attributes.length === 0) {
+ console.log("SAMPLE:", d[0]);
+ console.log("CHECKING:", _this.trait_color_dict[d[0]]);
+ return _this.trait_color_dict[d[0]];
+ } else if (_this.attributes.length > 0 && _this.attribute !== "None") {
console.log("@attribute:", _this.attribute);
console.log("d[2]", d[2]);
console.log("the_color:", _this.attr_color_dict[_this.attribute][d[2][_this.attribute]]);
@@ -164,6 +168,48 @@
return _results;
};
+ Bar_Chart.prototype.get_trait_color_dict = function(samples, vals) {
+ var color, color_range, distinct_vals, i, key, sample, this_color_dict, value, _i, _j, _len, _len1, _results,
+ _this = this;
+ this.trait_color_dict = {};
+ console.log("vals:", vals);
+ for (key in vals) {
+ if (!__hasProp.call(vals, key)) continue;
+ distinct_vals = vals[key];
+ this_color_dict = {};
+ if (distinct_vals.length < 10) {
+ color = d3.scale.category10();
+ for (i = _i = 0, _len = distinct_vals.length; _i < _len; i = ++_i) {
+ value = distinct_vals[i];
+ this_color_dict[value] = color(i);
+ }
+ } else {
+ console.log("distinct_values:", distinct_vals);
+ if (_.every(distinct_vals, function(d) {
+ if (isNaN(d)) {
+ return false;
+ } else {
+ return true;
+ }
+ })) {
+ color_range = d3.scale.linear().domain([d3.min(distinct_vals), d3.max(distinct_vals)]).range([0, 255]);
+ for (i = _j = 0, _len1 = distinct_vals.length; _j < _len1; i = ++_j) {
+ value = distinct_vals[i];
+ console.log("color_range(value):", parseInt(color_range(value)));
+ this_color_dict[value] = d3.rgb(parseInt(color_range(value)), 0, 0);
+ }
+ }
+ }
+ }
+ _results = [];
+ for (sample in samples) {
+ if (!__hasProp.call(samples, sample)) continue;
+ value = samples[sample];
+ _results.push(this.trait_color_dict[sample] = this_color_dict[value]);
+ }
+ return _results;
+ };
+
Bar_Chart.prototype.convert_into_colors = function(values) {
var color_range, i, value, _i, _len, _results;
color_range = d3.scale.linear().domain([d3.min(values), d3.max(values)]).range([0, 255]);
@@ -346,16 +392,17 @@
trimmed_samples = this.trim_values(trait_sample_data);
distinct_values = {};
distinct_values["collection_trait"] = this.get_distinct_values(trimmed_samples);
- this.get_attr_color_dict(distinct_values);
+ this.get_trait_color_dict(trimmed_samples, distinct_values);
+ console.log("TRAIT_COLOR_DICT:", this.trait_color_dict);
if ($("#update_bar_chart").html() === 'Sort By Name') {
return this.svg.selectAll(".bar").data(this.sorted_samples()).transition().duration(1000).style("fill", function(d) {
- return _this.attr_color_dict["collection_trait"][trimmed_samples[d[0]]];
+ return _this.trait_color_dict[d[0]];
}).select("title").text(function(d) {
return d[1];
});
} else {
return this.svg.selectAll(".bar").data(this.samples).transition().duration(1000).style("fill", function(d) {
- return _this.attr_color_dict["collection_trait"][trimmed_samples[d[0]]];
+ return _this.trait_color_dict[d[0]];
});
}
};
diff --git a/wqflask/wqflask/templates/interval_mapping.html b/wqflask/wqflask/templates/interval_mapping.html
index e4e08388..e4b93bf4 100644
--- a/wqflask/wqflask/templates/interval_mapping.html
+++ b/wqflask/wqflask/templates/interval_mapping.html
@@ -77,7 +77,6 @@
<script language="javascript" type="text/javascript" src="/static/packages/TableTools/media/js/TableTools.min.js"></script>
<script language="javascript" type="text/javascript" src="/static/packages/underscore/underscore-min.js"></script>
-
<script type="text/javascript" charset="utf-8">
$(document).ready( function () {
console.time("Creating table");
diff --git a/wqflask/wqflask/templates/show_trait_statistics_new.html b/wqflask/wqflask/templates/show_trait_statistics_new.html
index 6d6b1d24..9393e9bd 100644
--- a/wqflask/wqflask/templates/show_trait_statistics_new.html
+++ b/wqflask/wqflask/templates/show_trait_statistics_new.html
@@ -51,7 +51,7 @@
<div id="bar_chart"></div>
</div>
</div>
- <div class="tab-pane active" id="box_plot_tab">
+ <div class="tab-pane" id="box_plot_tab">
{% if sample_groups|length > 1 %}
<select class="box_plot_samples_group">
{% for group, pretty_group in sample_group_types.items() %}