aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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() %}