aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZachary Sloan2014-08-12 21:24:24 +0000
committerZachary Sloan2014-08-12 21:24:24 +0000
commit18e3a1da1a96e8585746e9e4e4c5f5874512d94e (patch)
treebb479e3ec921240c3d61f5221fc3b6be6913fb5f
parent7ae4ea4cfd2bc06e71a23cd92d725a6b8a40d06e (diff)
downloadgenenetwork2-18e3a1da1a96e8585746e9e4e4c5f5874512d94e.tar.gz
Fixed the scrollable data tables for the show trait page
Added the option to display the rqtl results (and soon other mapping results) as either a manhattan plot or "interval map" style curve chart Removed a couple unnecessary javascript imports Changed the function in helper_functions.py that creates the trait and dataset objects, making it to where the trait object also gets qtl info Fixed color by trait after it was broken by the "scatterplot matrix" function
-rwxr-xr-xwqflask/utility/helper_functions.py3
-rwxr-xr-xwqflask/wqflask/interval_mapping/interval_mapping.py2
-rwxr-xr-xwqflask/wqflask/marker_regression/marker_regression.py78
-rwxr-xr-xwqflask/wqflask/show_trait/show_trait.py36
-rw-r--r--wqflask/wqflask/static/new/css/panelutil.css4
-rw-r--r--wqflask/wqflask/static/new/javascript/chr_interval_map.coffee63
-rw-r--r--wqflask/wqflask/static/new/javascript/create_manhattan_plot.coffee5
-rw-r--r--wqflask/wqflask/static/new/javascript/create_manhattan_plot.js3
-rwxr-xr-xwqflask/wqflask/static/new/javascript/get_traits_from_collection.coffee7
-rwxr-xr-xwqflask/wqflask/static/new/javascript/get_traits_from_collection.js5
-rw-r--r--wqflask/wqflask/static/new/javascript/lod_chart.coffee188
-rw-r--r--wqflask/wqflask/static/new/javascript/lod_chart.js65
-rw-r--r--wqflask/wqflask/static/new/javascript/manhattan_plot.coffee92
-rwxr-xr-xwqflask/wqflask/static/new/javascript/marker_regression.coffee37
-rwxr-xr-xwqflask/wqflask/static/new/javascript/marker_regression.js54
-rwxr-xr-xwqflask/wqflask/static/new/javascript/search_results.coffee10
-rwxr-xr-xwqflask/wqflask/static/new/javascript/search_results.js12
-rwxr-xr-xwqflask/wqflask/static/new/javascript/show_trait_mapping_tools.coffee3
-rwxr-xr-xwqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js1
-rwxr-xr-xwqflask/wqflask/templates/correlation_page.html1
-rwxr-xr-xwqflask/wqflask/templates/marker_regression.html3
-rwxr-xr-xwqflask/wqflask/templates/search_result_page.html30
-rwxr-xr-xwqflask/wqflask/templates/show_trait.html3
-rwxr-xr-xwqflask/wqflask/templates/show_trait_mapping_tools.html28
-rwxr-xr-xwqflask/wqflask/views.py3
25 files changed, 279 insertions, 457 deletions
diff --git a/wqflask/utility/helper_functions.py b/wqflask/utility/helper_functions.py
index ca3e2350..15f60765 100755
--- a/wqflask/utility/helper_functions.py
+++ b/wqflask/utility/helper_functions.py
@@ -13,7 +13,8 @@ def get_species_dataset_trait(self, start_vars):
print("After creating species")
self.this_trait = GeneralTrait(dataset=self.dataset,
name=start_vars['trait_id'],
- cellid=None)
+ cellid=None,
+ get_qtl_info=True)
print("After creating trait")
#if read_genotype:
diff --git a/wqflask/wqflask/interval_mapping/interval_mapping.py b/wqflask/wqflask/interval_mapping/interval_mapping.py
index e70f11cb..1b651411 100755
--- a/wqflask/wqflask/interval_mapping/interval_mapping.py
+++ b/wqflask/wqflask/interval_mapping/interval_mapping.py
@@ -95,7 +95,7 @@ class IntervalMapping(object):
#if self.plotScale == 'physic' and not fd.genotype.Mbmap:
# self.plotScale = 'morgan'
#self.method = start_vars['mapping_method']
- self.num_permutations = int(start_vars['num_permutations'])
+ self.num_permutations = int(start_vars['num_perm'])
#self.do_bootstrap = start_vars['do_bootstrap']
#self.selected_chr = start_vars['chromosome']
if start_vars['display_additive'] == "yes":
diff --git a/wqflask/wqflask/marker_regression/marker_regression.py b/wqflask/wqflask/marker_regression/marker_regression.py
index 59d87b36..1524143e 100755
--- a/wqflask/wqflask/marker_regression/marker_regression.py
+++ b/wqflask/wqflask/marker_regression/marker_regression.py
@@ -71,7 +71,10 @@ class MarkerRegression(object):
elif self.mapping_method == "rqtl_geno":
self.num_perm = start_vars['num_perm']
self.control = start_vars['control_marker']
- self.control_db = start_vars['control_marker_db']
+ if start_vars['manhattan_plot'] == "true":
+ self.manhattan_plot = True
+ else:
+ self.manhattan_plot = False
print("doing rqtl_geno")
qtl_results = self.run_rqtl_geno()
print("qtl_results:", qtl_results)
@@ -122,11 +125,13 @@ class MarkerRegression(object):
print("json_data:", self.json_data)
+
self.js_data = dict(
json_data = self.json_data,
this_trait = self.this_trait.name,
data_set = self.dataset.name,
maf = self.maf,
+ manhattan_plot = self.manhattan_plot,
chromosomes = chromosome_mb_lengths,
qtl_results = self.filtered_markers,
)
@@ -218,6 +223,7 @@ class MarkerRegression(object):
robjects.packages.importr("qtl")
robjects.r('the_cross <- read.cross(format="csvr", dir="/home/zas1024/PLINK2RQTL/test", file="BXD.csvr")')
robjects.r('the_cross <- calc.genoprob(the_cross)')
+
pheno_as_string = "c("
#for i, val in enumerate(self.vals):
# if val == "x":
@@ -243,47 +249,59 @@ class MarkerRegression(object):
pheno_as_string += ")"
+ robjects.r('the_cross$pheno <- cbind(pull.pheno(the_cross), the_pheno = '+ pheno_as_string +')')
+
print("self.control:", self.control)
+
if self.control != "":
- print("self.control_db:", self.control_db)
- control_trait = GeneralTrait(name=str(self.control), dataset_name=str(self.control_db))
- control_vals = []
- for sample in self.dataset.group.samplelist:
- if sample in control_trait.data:
- control_vals.append(control_trait.data[sample].value)
- else:
- control_vals.append("x")
- print("control_vals:", control_vals)
- control_as_string = "c("
- for j, val2 in enumerate(control_vals):
- if val2 == "x":
- if j < (len(control_vals) - 1):
- control_as_string += "NA,"
+ control_markers = self.control.split(",")
+ control_string = ""
+ for i, control in enumerate(control_markers):
+ control_trait = GeneralTrait(name=str(control), dataset_name=str(self.dataset.group.name + "Geno"))
+ control_vals = []
+ for sample in self.dataset.group.samplelist:
+ if sample in control_trait.data:
+ control_vals.append(control_trait.data[sample].value)
else:
- control_as_string += "NA"
- else:
- if j < (len(control_vals) - 1):
- control_as_string += str(val2) + ","
+ control_vals.append("x")
+ print("control_vals:", control_vals)
+ control_as_string = "c("
+ for j, val2 in enumerate(control_vals):
+ if val2 == "x":
+ if j < (len(control_vals) - 1):
+ control_as_string += "NA,"
+ else:
+ control_as_string += "NA"
else:
- control_as_string += str(val2)
- #if i < (len(control_vals) - 1):
- # control_as_string += str(new_val2) + ","
- #else:
- # control_as_string += str(new_val2)
- control_as_string += ")"
- print("control_as_string:", control_as_string)
-
- r_string = 'scanone(the_cross, pheno.col='+pheno_as_string+', n.perm='+self.num_perm+', addcovar='+control_as_string+')'
+ if j < (len(control_vals) - 1):
+ control_as_string += str(val2) + ","
+ else:
+ control_as_string += str(val2)
+ #if i < (len(control_vals) - 1):
+ # control_as_string += str(new_val2) + ","
+ #else:
+ # control_as_string += str(new_val2)
+ control_as_string += ")"
+ print("control_as_string:", control_as_string)
+ if i < (len(control_markers)-1):
+ control_string += control_as_string + ","
+ else:
+ control_string += control_as_string
+
+ robjects.r('covariates <- cbind( '+ control_string +')')
+
+ r_string = 'scanone(the_cross, pheno.col="the_pheno", n.perm='+self.num_perm+', addcovar=covariates, intcovar=covariates[,'+ str(len(control_markers)) +'])'
+ print("r_string:", r_string)
if self.num_perm > 0:
thresholds = robjects.r(r_string)
print("thresholds:", thresholds)
#r_string = 'scanone(the_cross, pheno.col='+pheno_as_string+', addcovar='+control_as_string+')'
- print("r_string:", r_string)
+
else:
#r_string = 'scanone(the_cross, pheno.col='+pheno_as_string+', n.perm='+self.num_perm+')'
- r_string = 'scanone(the_cross, pheno.col='+pheno_as_string+')'
+ r_string = 'scanone(the_cross, pheno.col="the_pheno", n.perm='+self.num_perm+')'
print("r_string:", r_string)
result_data_frame = robjects.r(r_string)
diff --git a/wqflask/wqflask/show_trait/show_trait.py b/wqflask/wqflask/show_trait/show_trait.py
index a4a24fd4..51cf337c 100755
--- a/wqflask/wqflask/show_trait/show_trait.py
+++ b/wqflask/wqflask/show_trait/show_trait.py
@@ -91,8 +91,10 @@ class ShowTrait(object):
self.build_correlation_tools(self.this_trait)
#Get nearest marker for composite mapping
- self.nearest_marker, self.nearest_marker_db = get_nearest_marker(self.this_trait)
-
+
+ if self.dataset.type != "Geno":
+ self.nearest_marker1 = get_nearest_marker(self.this_trait, self.dataset)[0]
+ self.nearest_marker2 = get_nearest_marker(self.this_trait, self.dataset)[1]
self.make_sample_lists(self.this_trait)
@@ -106,8 +108,9 @@ class ShowTrait(object):
hddn['mapping_display_all'] = True
hddn['suggestive'] = 0
hddn['num_perm'] = 0
- hddn['control_marker'] = self.nearest_marker
- hddn['control_marker_db'] = self.nearest_marker_db
+ hddn['manhattan_plot'] = False
+ if self.dataset.type != "Geno":
+ hddn['control_marker'] = self.nearest_marker1+","+self.nearest_marker2
hddn['maf'] = 0.01
hddn['compare_traits'] = []
@@ -1275,20 +1278,23 @@ def get_samplelist_from_trait_data(this_trait, all_samples_ordered):
return other_sample_names, all_samples_ordered
-def get_nearest_marker(this_trait):
- this_chr = this_trait.chr
- this_mb = this_trait.mb
- query = """SELECT ProbeSet.Name, ProbeSetFreeze.Name
- FROM ProbeSet, ProbeSetXRef, ProbeSetFreeze
- WHERE ProbeSet.Chr = '{}' AND
- ProbeSet.Id=ProbeSetXRef.ProbeSetId AND
- ProbeSetXRef.ProbeSetFreezeId=ProbeSetFreeze.Id AND
- ProbeSetFreeze.Name='{}'
- ORDER BY ABS( Mb - {}) LIMIT 2""".format(this_trait.chr, this_trait.dataset.name, this_trait.mb)
+def get_nearest_marker(this_trait, this_db):
+ this_chr = this_trait.locus_chr
+ print("this_chr:", this_chr)
+ this_mb = this_trait.locus_mb
+ print("this_mb:", this_mb)
+ query = """SELECT Geno.Name
+ FROM Geno, GenoXRef, GenoFreeze
+ WHERE Geno.Chr = '{}' AND
+ GenoXRef.GenoId = Geno.Id AND
+ GenoFreeze.Id = GenoXRef.GenoFreezeId AND
+ GenoFreeze.Name = '{}'
+ ORDER BY ABS( Geno.Mb - {}) LIMIT 2""".format(this_chr, this_db.group.name+"Geno", this_mb)
print("query:", query)
result = g.db.execute(query).fetchall()
+ print("result:", result)
- return result[1][0], result[1][1]
+ return result[0][0], result[1][0]
diff --git a/wqflask/wqflask/static/new/css/panelutil.css b/wqflask/wqflask/static/new/css/panelutil.css
index ff363e49..ccd7eb01 100644
--- a/wqflask/wqflask/static/new/css/panelutil.css
+++ b/wqflask/wqflask/static/new/css/panelutil.css
@@ -43,12 +43,12 @@ div.qtlcharts line.x.axis.grid {
div.qtlcharts line.y.axis.grid {
stroke: white;
-}
+}*/
div.qtlcharts .extent {
fill: #cac;
opacity: 0.3;
-}*/
+}
div.qtlcharts circle.selected {
fill: hotpink;
diff --git a/wqflask/wqflask/static/new/javascript/chr_interval_map.coffee b/wqflask/wqflask/static/new/javascript/chr_interval_map.coffee
index 62ce4d3d..e1993032 100644
--- a/wqflask/wqflask/static/new/javascript/chr_interval_map.coffee
+++ b/wqflask/wqflask/static/new/javascript/chr_interval_map.coffee
@@ -214,69 +214,6 @@ class Chr_Interval_Map
.attr("stroke-width", 1)
.attr("fill", "none")
-
- #add_plot_points: () ->
- # @plot_point = @svg.selectAll("circle")
- # .data(@plot_coordinates)
- # .enter()
- # .append("circle")
- # .attr("cx", (d) =>
- # return @x_scale(d[0])
- # )
- # .attr("cy", (d) =>
- # return @y_scale(d[1])
- # )
- # .attr("r", (d) =>
- # #if d[1] > 2
- # # return 3
- # #else
- # return 2
- # )
- # .attr("fill", (d) =>
- # #if d[1] > 2
- # # return "white"
- # #else
- # return "black"
- # )
- # .attr("stroke", "black")
- # .attr("stroke-width", "1")
- # .attr("id", (d) =>
- # return "point_" + String(d[2])
- # )
- # .classed("circle", true)
- # .on("mouseover", (d) =>
- # console.log("d3.event is:", d3.event)
- # console.log("d is:", d)
- # this_id = "point_" + String(d[2])
- # d3.select("#" + this_id).classed("d3_highlight", true)
- # .attr("r", 5)
- # .attr("stroke", "none")
- # .attr("fill", "blue")
- # .call(@show_marker_in_table(d))
- # )
- # .on("mouseout", (d) =>
- # this_id = "point_" + String(d[2])
- # d3.select("#" + this_id).classed("d3_highlight", false)
- # .attr("r", (d) =>
- # #if d[1] > 2
- # # return 3
- # #else
- # return 2
- # )
- # .attr("fill", (d) =>
- # #if d[1] > 2
- # # return "white"
- # #else
- # return "black"
- # )
- # .attr("stroke", "black")
- # .attr("stroke-width", "1")
- # )
- # .append("svg:title")
- # .text((d) =>
- # return d[2]
- # )
-
return_to_full_view: () ->
$('#topchart').remove()
$('#chart_container').append('<div class="qtlcharts" id="topchart"></div>')
diff --git a/wqflask/wqflask/static/new/javascript/create_manhattan_plot.coffee b/wqflask/wqflask/static/new/javascript/create_manhattan_plot.coffee
index 05ad5419..0cd9e124 100644
--- a/wqflask/wqflask/static/new/javascript/create_manhattan_plot.coffee
+++ b/wqflask/wqflask/static/new/javascript/create_manhattan_plot.coffee
@@ -6,13 +6,16 @@ create_manhattan_plot = ->
totalh = halfh*2
totalw = (w+margin.left+margin.right)
+ console.log("js_data:", js_data)
+
# simplest use
#d3.json "data.json", (data) ->
mychart = lodchart().lodvarname("lod.hk")
.height(h)
.width(w)
.margin(margin)
-
+ .manhattanPlot(js_data.manhattan_plot)
+
data = js_data.json_data
d3.select("div#topchart")
diff --git a/wqflask/wqflask/static/new/javascript/create_manhattan_plot.js b/wqflask/wqflask/static/new/javascript/create_manhattan_plot.js
index 62584fb2..d30e8e6a 100644
--- a/wqflask/wqflask/static/new/javascript/create_manhattan_plot.js
+++ b/wqflask/wqflask/static/new/javascript/create_manhattan_plot.js
@@ -15,7 +15,8 @@ create_manhattan_plot = function() {
halfh = h + margin.top + margin.bottom;
totalh = halfh * 2;
totalw = w + margin.left + margin.right;
- mychart = lodchart().lodvarname("lod.hk").height(h).width(w).margin(margin);
+ console.log("js_data:", js_data);
+ mychart = lodchart().lodvarname("lod.hk").height(h).width(w).margin(margin).manhattanPlot(js_data.manhattan_plot);
data = js_data.json_data;
d3.select("div#topchart").datum(data).call(mychart);
chrrect = mychart.chrSelect();
diff --git a/wqflask/wqflask/static/new/javascript/get_traits_from_collection.coffee b/wqflask/wqflask/static/new/javascript/get_traits_from_collection.coffee
index 78d69f7a..ff7c041c 100755
--- a/wqflask/wqflask/static/new/javascript/get_traits_from_collection.coffee
+++ b/wqflask/wqflask/static/new/javascript/get_traits_from_collection.coffee
@@ -109,9 +109,10 @@ get_trait_data = (trait_data, textStatus, jqXHR) ->
#console.log("json_data[1]:", json_data[1])
console.log("THE LENGTH IS:", $('input[name=vals]').length)
- if $('input[name=vals]').length == 1
- create_scatterplot(samples, [this_trait_vals, vals])
+ #if $('input[name=vals]').length == 1
+ # create_scatterplot(samples, [this_trait_vals, vals])
+ color_by_trait(trait_sample_data)
get_this_trait_vals = (samples) ->
this_trait_vals = []
@@ -142,7 +143,7 @@ assemble_into_json = (this_trait_vals) ->
color_by_trait = (trait_sample_data, textStatus, jqXHR) ->
#trait_sample_data = trait_sample_data
- #console.log('in color_by_trait:', trait_sample_data)
+ console.log('in color_by_trait:', trait_sample_data)
root.bar_chart.color_by_trait(trait_sample_data)
process_traits = (trait_data, textStatus, jqXHR) ->
diff --git a/wqflask/wqflask/static/new/javascript/get_traits_from_collection.js b/wqflask/wqflask/static/new/javascript/get_traits_from_collection.js
index 402d62f4..68635118 100755
--- a/wqflask/wqflask/static/new/javascript/get_traits_from_collection.js
+++ b/wqflask/wqflask/static/new/javascript/get_traits_from_collection.js
@@ -111,9 +111,7 @@ get_trait_data = function(trait_data, textStatus, jqXHR) {
$('#hidden_inputs').append('<input type="hidden" name="vals" value="[' + vals.toString() + ']" />');
this_trait_vals = get_this_trait_vals(samples);
console.log("THE LENGTH IS:", $('input[name=vals]').length);
- if ($('input[name=vals]').length === 1) {
- return create_scatterplot(samples, [this_trait_vals, vals]);
- }
+ return color_by_trait(trait_sample_data);
};
get_this_trait_vals = function(samples) {
@@ -149,6 +147,7 @@ assemble_into_json = function(this_trait_vals) {
};
color_by_trait = function(trait_sample_data, textStatus, jqXHR) {
+ console.log('in color_by_trait:', trait_sample_data);
return root.bar_chart.color_by_trait(trait_sample_data);
};
diff --git a/wqflask/wqflask/static/new/javascript/lod_chart.coffee b/wqflask/wqflask/static/new/javascript/lod_chart.coffee
index dd2ad31d..309cec9e 100644
--- a/wqflask/wqflask/static/new/javascript/lod_chart.coffee
+++ b/wqflask/wqflask/static/new/javascript/lod_chart.coffee
@@ -4,6 +4,7 @@ lodchart = () ->
margin = {left:60, top:40, right:40, bottom: 40, inner:5}
axispos = {xtitle:25, ytitle:30, xlabel:5, ylabel:5}
titlepos = 20
+ manhattanPlot = false
ylim = null
additive_ylim = null
nyticks = 5
@@ -34,6 +35,7 @@ lodchart = () ->
markerSelect = null
chrSelect = null
pointsAtMarkers = true
+
## the main function
chart = (selection) ->
@@ -41,6 +43,10 @@ lodchart = () ->
#console.log("data:", data)
+ if manhattanPlot == true
+ pointcolor = "darkslateblue"
+ pointsize = 2
+
lodvarname = lodvarname ? data.lodnames[0]
data[lodvarname] = (Math.abs(x) for x in data[lodvarname]) # take absolute values
if 'additive' of data
@@ -115,6 +121,7 @@ lodchart = () ->
lightrect)
.attr("stroke", "none")
.on("click", (d) ->
+ console.log("d is:", d)
redraw_plot(d)
)
@@ -146,7 +153,7 @@ lodchart = () ->
#console.log("chr_length is:", chr_ob[1])
$('#topchart').remove()
$('#chart_container').append('<div class="qtlcharts" id="topchart"></div>')
- chr_plot = new Chr_Interval_Map(600, 1200, chr_ob)
+ chr_plot = new Chr_Manhattan_Plot(600, 1200, chr_ob)
# y-axis
rotate_ylab = rotate_ylab ? (ylab.length > 1)
@@ -247,43 +254,46 @@ lodchart = () ->
.attr("stroke", significantcolor)
.attr("stroke-width", 5)
.style("pointer-events", "none")
-
- # lod curves by chr
- lodcurve = (chr, lodcolumn) ->
- d3.svg.line()
- .x((d) -> xscale[chr](d))
- .y((d,i) -> yscale(data.lodByChr[chr][i][lodcolumn]))
-
- #if 'additive' of data
- # additivecurve = (chr, lodcolumn) ->
- # d3.svg.line()
- # .x((d) -> xscale[chr](d))
- # .y((d,i) -> additive_yscale(data.additiveByChr[chr][i][lodcolumn]))
-
- curves = g.append("g").attr("id", "curves")
-
- for chr in data.chrnames
- curves.append("path")
- .datum(data.posByChr[chr[0]])
- .attr("d", lodcurve(chr[0], lodvarnum))
- .attr("stroke", lodlinecolor)
- .attr("fill", "none")
- .attr("stroke-width", linewidth)
- .style("pointer-events", "none")
+
+ if manhattanPlot == false
+ # lod curves by chr
+ lodcurve = (chr, lodcolumn) ->
+ d3.svg.line()
+ .x((d) -> xscale[chr](d))
+ .y((d,i) -> yscale(data.lodByChr[chr][i][lodcolumn]))
+
+ #if 'additive' of data
+ # additivecurve = (chr, lodcolumn) ->
+ # d3.svg.line()
+ # .x((d) -> xscale[chr](d))
+ # .y((d,i) -> additive_yscale(data.additiveByChr[chr][i][lodcolumn]))
+
+ curves = g.append("g").attr("id", "curves")
+
+ for chr in data.chrnames
+ curves.append("path")
+ .datum(data.posByChr[chr[0]])
+ .attr("d", lodcurve(chr[0], lodvarnum))
+ .attr("stroke", lodlinecolor)
+ .attr("fill", "none")
+ .attr("stroke-width", linewidth)
+ .style("pointer-events", "none")
+
+ ##if data['additive'].length > 0
+ #if 'additive' of data
+ # for chr in data.chrnames
+ # curves.append("path")
+ # .datum(data.posByChr[chr[0]])
+ # .attr("d", additivecurve(chr[0], lodvarnum))
+ # .attr("stroke", additivelinecolor)
+ # .attr("fill", "none")
+ # .attr("stroke-width", 1)
+ # .style("pointer-events", "none")
- ##if data['additive'].length > 0
- #if 'additive' of data
- # for chr in data.chrnames
- # curves.append("path")
- # .datum(data.posByChr[chr[0]])
- # .attr("d", additivecurve(chr[0], lodvarnum))
- # .attr("stroke", additivelinecolor)
- # .attr("fill", "none")
- # .attr("stroke-width", 1)
- # .style("pointer-events", "none")
- #
# points at markers
+ console.log("before pointsize")
if pointsize > 0
+ console.log("pointsize > 0 !!!")
markerpoints = g.append("g").attr("id", "markerpoints_visible")
markerpoints.selectAll("empty")
.data(data.markers)
@@ -347,8 +357,6 @@ lodchart = () ->
d3.select(this).attr("opacity", 0)
.call(markertip.hide)
-
-
## configuration parameters
chart.width = (value) ->
return width unless arguments.length
@@ -374,6 +382,11 @@ lodchart = () ->
return axispos unless arguments.length
axispos = value
chart
+
+ chart.manhattanPlot = (value) ->
+ return manhattanPlot unless arguments.length
+ manhattanPlot = value
+ chart
chart.ylim = (value) ->
return ylim unless arguments.length
@@ -481,8 +494,9 @@ lodchart = () ->
chart.xscale = () ->
return xscale
- chart.lodcurve = () ->
- return lodcurve
+ if manhattanPlot == false
+ chart.lodcurve = () ->
+ return lodcurve
#if data['additive'].length > 0
chart.additivecurve = () ->
@@ -497,99 +511,3 @@ lodchart = () ->
# return the chart function
chart
-# reorganize lod/pos by chromosome
-# lodvarname==null -> case for multiple LOD columns (lodheatmap)
-# lodvarname provided -> case for one LOD column (lodchart)
-#reorgLodData = (data, lodvarname=null) ->
-# data.posByChr = {}
-# data.lodByChr = {}
-# data.additiveByChr = {}
-#
-# for chr,i in data.chrnames
-# data.posByChr[chr[0]] = []
-# data.lodByChr[chr[0]] = []
-# data.additiveByChr[chr[0]] = []
-# for pos, j in data.pos
-# if data.chr[j] == chr[0]
-# data.posByChr[chr[0]].push(pos)
-# data.lodnames = [data.lodnames] unless Array.isArray(data.lodnames)
-# if 'additive' of data
-# #if data['additive'].length > 0
-# additiveval = (data['additive'][j] for lodcolumn in data.lodnames)
-# lodval = (data[lodcolumn][j] for lodcolumn in data.lodnames)
-# data.additiveByChr[chr[0]].push(additiveval)
-# data.lodByChr[chr[0]].push(lodval)
-#
-#
-# if lodvarname?
-# data.markers = []
-# for marker,i in data.markernames
-# if marker != ""
-# data.markers.push({name:marker, chr:data.chr[i], pos:data.pos[i], lod:data[lodvarname][i]})
-#
-# data
-
-
-# calculate chromosome start/end + scales, for heat map
-#chrscales = (data, width, chrGap, leftMargin, pad4heatmap) ->
-# # start and end of chromosome positions
-# chrStart = []
-# chrEnd = []
-# chrLength = []
-# totalChrLength = 0
-# maxd = 0
-# for chr in data.chrnames
-# d = maxdiff(data.posByChr[chr[0]])
-# maxd = d if d > maxd
-#
-# rng = d3.extent(data.posByChr[chr[0]])
-# chrStart.push(rng[0])
-# chrEnd.push(rng[1])
-# L = rng[1] - rng[0]
-# chrLength.push(L)
-# totalChrLength += L
-#
-# # adjust lengths for heatmap
-# if pad4heatmap
-# data.recwidth = maxd
-# chrStart = chrStart.map (x) -> x-maxd/2
-# chrEnd = chrEnd.map (x) -> x+maxd/2
-# chrLength = chrLength.map (x) -> x+maxd
-# totalChrLength += (chrLength.length*maxd)
-#
-# # break up x axis into chromosomes by length, with gaps
-# data.chrStart = []
-# data.chrEnd = []
-# cur = leftMargin
-# cur += chrGap/2 unless pad4heatmap
-# data.xscale = {}
-# for chr,i in data.chrnames
-# data.chrStart.push(cur)
-# w = Math.round((width-chrGap*(data.chrnames.length-pad4heatmap))/totalChrLength*chrLength[i])
-# data.chrEnd.push(cur + w)
-# cur = data.chrEnd[i] + chrGap
-# # x-axis scales, by chromosome
-# data.xscale[chr[0]] = d3.scale.linear()
-# .domain([chrStart[i], chrEnd[i]])
-# .range([data.chrStart[i], data.chrEnd[i]])
-#
-# # return data with new stuff added
-# data
-
-# maximum difference between adjacent values in a vector
-#maxdiff = (x) ->
-# return null if x.length < 2
-# result = x[1] - x[0]
-# return result if x.length < 3
-# for i in [2...x.length]
-# d = x[i] - x[i-1]
-# result = d if d > result
-# result
-#
-## determine rounding of axis labels
-#formatAxis = (d) ->
-# d = d[1] - d[0]
-# ndig = Math.floor( Math.log(d % 10) / Math.log(10) )
-# ndig = 0 if ndig > 0
-# ndig = Math.abs(ndig)
-# d3.format(".#{ndig}f")
diff --git a/wqflask/wqflask/static/new/javascript/lod_chart.js b/wqflask/wqflask/static/new/javascript/lod_chart.js
index 49ca962f..e6f34854 100644
--- a/wqflask/wqflask/static/new/javascript/lod_chart.js
+++ b/wqflask/wqflask/static/new/javascript/lod_chart.js
@@ -2,7 +2,7 @@
var lodchart;
lodchart = function() {
- var additive_ylab, additive_ylim, additive_yscale, additive_yticks, additivelinecolor, axispos, chart, chrGap, chrSelect, darkrect, height, lightrect, linewidth, lodcurve, lodlinecolor, lodvarname, margin, markerSelect, nyticks, pad4heatmap, pointcolor, pointsAtMarkers, pointsize, pointstroke, rotate_ylab, significantcolor, suggestivecolor, title, titlepos, width, xlab, xscale, ylab, ylim, yscale, yticks;
+ var additive_ylab, additive_ylim, additive_yscale, additive_yticks, additivelinecolor, axispos, chart, chrGap, chrSelect, darkrect, height, lightrect, linewidth, lodcurve, lodlinecolor, lodvarname, manhattanPlot, margin, markerSelect, nyticks, pad4heatmap, pointcolor, pointsAtMarkers, pointsize, pointstroke, rotate_ylab, significantcolor, suggestivecolor, title, titlepos, width, xlab, xscale, ylab, ylim, yscale, yticks;
width = 800;
height = 500;
margin = {
@@ -19,6 +19,7 @@ lodchart = function() {
ylabel: 5
};
titlepos = 20;
+ manhattanPlot = false;
ylim = null;
additive_ylim = null;
nyticks = 5;
@@ -52,6 +53,10 @@ lodchart = function() {
chart = function(selection) {
return selection.each(function(data) {
var additive_yaxis, chr, curves, g, gEnter, hiddenpoints, lodvarnum, markerpoints, markertip, redraw_plot, rotate_additive_ylab, suggestive_bar, svg, titlegrp, x, xaxis, yaxis, _i, _len, _ref;
+ if (manhattanPlot === true) {
+ pointcolor = "darkslateblue";
+ pointsize = 2;
+ }
lodvarname = lodvarname != null ? lodvarname : data.lodnames[0];
data[lodvarname] = (function() {
var _i, _len, _ref, _results;
@@ -114,6 +119,7 @@ lodchart = function() {
}
return lightrect;
}).attr("stroke", "none").on("click", function(d) {
+ console.log("d is:", d);
return redraw_plot(d);
});
xaxis = g.append("g").attr("class", "x axis");
@@ -129,7 +135,7 @@ lodchart = function() {
var chr_plot;
$('#topchart').remove();
$('#chart_container').append('<div class="qtlcharts" id="topchart"></div>');
- return chr_plot = new Chr_Interval_Map(600, 1200, chr_ob);
+ return chr_plot = new Chr_Manhattan_Plot(600, 1200, chr_ob);
};
rotate_ylab = rotate_ylab != null ? rotate_ylab : ylab.length > 1;
yaxis = g.append("g").attr("class", "y axis");
@@ -175,27 +181,31 @@ lodchart = function() {
return yscale(d);
}).attr("x1", margin.left).attr("x2", margin.left + width).attr("fill", "none").attr("stroke", significantcolor).attr("stroke-width", 5).style("pointer-events", "none");
}
- lodcurve = function(chr, lodcolumn) {
- return d3.svg.line().x(function(d) {
- return xscale[chr](d);
- }).y(function(d, i) {
- return yscale(data.lodByChr[chr][i][lodcolumn]);
- });
- };
- curves = g.append("g").attr("id", "curves");
- _ref = data.chrnames;
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- chr = _ref[_i];
- curves.append("path").datum(data.posByChr[chr[0]]).attr("d", lodcurve(chr[0], lodvarnum)).attr("stroke", lodlinecolor).attr("fill", "none").attr("stroke-width", linewidth).style("pointer-events", "none");
+ if (manhattanPlot === false) {
+ lodcurve = function(chr, lodcolumn) {
+ return d3.svg.line().x(function(d) {
+ return xscale[chr](d);
+ }).y(function(d, i) {
+ return yscale(data.lodByChr[chr][i][lodcolumn]);
+ });
+ };
+ curves = g.append("g").attr("id", "curves");
+ _ref = data.chrnames;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ chr = _ref[_i];
+ curves.append("path").datum(data.posByChr[chr[0]]).attr("d", lodcurve(chr[0], lodvarnum)).attr("stroke", lodlinecolor).attr("fill", "none").attr("stroke-width", linewidth).style("pointer-events", "none");
+ }
}
+ console.log("before pointsize");
if (pointsize > 0) {
- markerpoints = g.append("g").attr("id", "markerpoints_visible");
- markerpoints.selectAll("empty").data(data.markers).enter().append("circle").attr("cx", function(d) {
- return xscale[d.chr](d.pos);
- }).attr("cy", function(d) {
- return yscale(d.lod);
- }).attr("r", pointsize).attr("fill", pointcolor).attr("stroke", pointstroke).attr("pointer-events", "hidden");
+ console.log("pointsize > 0 !!!");
}
+ markerpoints = g.append("g").attr("id", "markerpoints_visible");
+ markerpoints.selectAll("empty").data(data.markers).enter().append("circle").attr("cx", function(d) {
+ return xscale[d.chr](d.pos);
+ }).attr("cy", function(d) {
+ return yscale(d.lod);
+ }).attr("r", pointsize).attr("fill", pointcolor).attr("stroke", pointstroke).attr("pointer-events", "hidden");
titlegrp = g.append("g").attr("class", "title").append("text").attr("x", margin.left + width / 2).attr("y", margin.top - titlepos).text(title);
g.append("rect").attr("x", margin.left).attr("y", margin.top).attr("height", height).attr("width", function() {
if (pad4heatmap) {
@@ -259,6 +269,13 @@ lodchart = function() {
axispos = value;
return chart;
};
+ chart.manhattanPlot = function(value) {
+ if (!arguments.length) {
+ return manhattanPlot;
+ }
+ manhattanPlot = value;
+ return chart;
+ };
chart.ylim = function(value) {
if (!arguments.length) {
return ylim;
@@ -402,9 +419,11 @@ lodchart = function() {
chart.xscale = function() {
return xscale;
};
- chart.lodcurve = function() {
- return lodcurve;
- };
+ if (manhattanPlot === false) {
+ chart.lodcurve = function() {
+ return lodcurve;
+ };
+ }
chart.additivecurve = function() {
return additivecurve;
};
diff --git a/wqflask/wqflask/static/new/javascript/manhattan_plot.coffee b/wqflask/wqflask/static/new/javascript/manhattan_plot.coffee
index cc087493..d637183d 100644
--- a/wqflask/wqflask/static/new/javascript/manhattan_plot.coffee
+++ b/wqflask/wqflask/static/new/javascript/manhattan_plot.coffee
@@ -370,95 +370,3 @@ lodchart = () ->
# return the chart function
chart
-
-
-# reorganize lod/pos by chromosome
-# lodvarname==null -> case for multiple LOD columns (lodheatmap)
-# lodvarname provided -> case for one LOD column (lodchart)
-#reorgLodData = (data, lodvarname=null) ->
-# data.posByChr = {}
-# data.lodByChr = {}
-#
-# for chr,i in data.chrnames
-# data.posByChr[chr[0]] = []
-# data.lodByChr[chr[0]] = []
-# for pos, j in data.pos
-# if data.chr[j] == chr[0]
-# data.posByChr[chr[0]].push(pos)
-# data.lodnames = [data.lodnames] unless Array.isArray(data.lodnames)
-# lodval = (data[lodcolumn][j] for lodcolumn in data.lodnames)
-# data.lodByChr[chr[0]].push(lodval)
-#
-#
-# if lodvarname?
-# data.markers = []
-# for marker,i in data.markernames
-# if marker != ""
-# data.markers.push({name:marker, chr:data.chr[i], pos:data.pos[i], lod:data[lodvarname][i]})
-#
-# data
-
-
-# calculate chromosome start/end + scales, for heat map
-#chrscales = (data, width, chrGap, leftMargin, pad4heatmap) ->
-# # start and end of chromosome positions
-# chrStart = []
-# chrEnd = []
-# chrLength = []
-# totalChrLength = 0
-# maxd = 0
-# for chr in data.chrnames
-# d = maxdiff(data.posByChr[chr[0]])
-# maxd = d if d > maxd
-#
-# rng = d3.extent(data.posByChr[chr[0]])
-# chrStart.push(rng[0])
-# chrEnd.push(rng[1])
-# L = rng[1] - rng[0]
-# chrLength.push(L)
-# totalChrLength += L
-#
-# # adjust lengths for heatmap
-# if pad4heatmap
-# data.recwidth = maxd
-# chrStart = chrStart.map (x) -> x-maxd/2
-# chrEnd = chrEnd.map (x) -> x+maxd/2
-# chrLength = chrLength.map (x) -> x+maxd
-# totalChrLength += (chrLength.length*maxd)
-#
-# # break up x axis into chromosomes by length, with gaps
-# data.chrStart = []
-# data.chrEnd = []
-# cur = leftMargin
-# cur += chrGap/2 unless pad4heatmap
-# data.xscale = {}
-# for chr,i in data.chrnames
-# data.chrStart.push(cur)
-# w = Math.round((width-chrGap*(data.chrnames.length-pad4heatmap))/totalChrLength*chrLength[i])
-# data.chrEnd.push(cur + w)
-# cur = data.chrEnd[i] + chrGap
-# # x-axis scales, by chromosome
-# data.xscale[chr[0]] = d3.scale.linear()
-# .domain([chrStart[i], chrEnd[i]])
-# .range([data.chrStart[i], data.chrEnd[i]])
-#
-# # return data with new stuff added
-# data
-#
-## maximum difference between adjacent values in a vector
-#maxdiff = (x) ->
-# return null if x.length < 2
-# result = x[1] - x[0]
-# return result if x.length < 3
-# for i in [2...x.length]
-# d = x[i] - x[i-1]
-# result = d if d > result
-# result
-#
-## determine rounding of axis labels
-#formatAxis = (d) ->
-# d = d[1] - d[0]
-# ndig = Math.floor( Math.log(d % 10) / Math.log(10) )
-# ndig = 0 if ndig > 0
-# ndig = Math.abs(ndig)
-# d3.format(".#{ndig}f")
diff --git a/wqflask/wqflask/static/new/javascript/marker_regression.coffee b/wqflask/wqflask/static/new/javascript/marker_regression.coffee
index 203c174c..959f2366 100755
--- a/wqflask/wqflask/static/new/javascript/marker_regression.coffee
+++ b/wqflask/wqflask/static/new/javascript/marker_regression.coffee
@@ -1,6 +1,6 @@
root = exports ? this
-class Manhattan_Plot
+class Lod_Chart
darkrect = "#F1F1F9"
lightrect = "#FBFBFF"
@@ -375,36 +375,7 @@ class Manhattan_Plot
else
return lightrect
)
- )
-
-
- #fill_chr_areas2: () ->
- # console.log("cumu_chr_lengths:", @cumulative_chr_lengths)
- # console.log("example:", @x_scale(@cumulative_chr_lengths[0]))
- # @svg.selectAll("rect.chr_fill_area")
- # .data(_.zip(@chr_lengths, @cumulative_chr_lengths), (d) =>
- # return d
- # )
- # .enter()
- # .append("rect")
- # .attr("x", (d) =>
- # if i == 0
- # return @x_scale(0)
- # else
- # return @x_scale(d[1])
- # )
- # .attr("y", @y_buffer)
- # .attr("width", (d) =>
- # return @x_scale(d[0])
- # )
- # .attr("height", @height-@y_buffer)
- # .attr("fill", (d, i) =>
- # return "whitesmoke"
- # #if i%2
- # # return "whitesmoke"
- # #else
- # # return "none"
- # )
+ )
add_chr_labels: () ->
chr_names = []
@@ -533,6 +504,6 @@ class Manhattan_Plot
@svg.select("path.line").attr("d", line);
-root.Manhattan_Plot = Manhattan_Plot
+#root.LodChart = Lod_Chart
-new Manhattan_Plot(600, 1200) \ No newline at end of file
+new Lod_Chart(600, 1200) \ No newline at end of file
diff --git a/wqflask/wqflask/static/new/javascript/marker_regression.js b/wqflask/wqflask/static/new/javascript/marker_regression.js
index 1fcee9fd..1bdc784f 100755
--- a/wqflask/wqflask/static/new/javascript/marker_regression.js
+++ b/wqflask/wqflask/static/new/javascript/marker_regression.js
@@ -1,10 +1,10 @@
// Generated by CoffeeScript 1.7.1
-var Manhattan_Plot, root,
+var Lod_Chart, root,
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
root = typeof exports !== "undefined" && exports !== null ? exports : this;
-Manhattan_Plot = (function() {
+Lod_Chart = (function() {
var darkrect, hoverrect, lightrect;
darkrect = "#F1F1F9";
@@ -13,7 +13,7 @@ Manhattan_Plot = (function() {
hoverrect = "#E9CFEC";
- function Manhattan_Plot(height, width) {
+ function Lod_Chart(height, width) {
var _ref;
this.height = height != null ? height : 800;
this.width = width != null ? width : 1200;
@@ -54,7 +54,7 @@ Manhattan_Plot = (function() {
console.timeEnd('Create graph');
}
- Manhattan_Plot.prototype.get_max_chr = function() {
+ Lod_Chart.prototype.get_max_chr = function() {
var chr, max_chr, result, _i, _len, _ref;
max_chr = 0;
_ref = this.qtl_results;
@@ -71,7 +71,7 @@ Manhattan_Plot = (function() {
return max_chr;
};
- Manhattan_Plot.prototype.get_chr_lengths = function() {
+ Lod_Chart.prototype.get_chr_lengths = function() {
/*
*Gets a list of both individual and cumulative (the position of one on the graph
@@ -93,7 +93,7 @@ Manhattan_Plot = (function() {
return [chr_lengths, cumulative_chr_lengths];
};
- Manhattan_Plot.prototype.get_qtl_count = function() {
+ Lod_Chart.prototype.get_qtl_count = function() {
var high_qtl_count, result, _i, _len, _ref;
high_qtl_count = 0;
_ref = js_data.qtl_results;
@@ -107,7 +107,7 @@ Manhattan_Plot = (function() {
return this.y_axis_filter = 0;
};
- Manhattan_Plot.prototype.create_coordinates = function() {
+ Lod_Chart.prototype.create_coordinates = function() {
var chr_length, chr_lengths, chr_seen, result, _i, _len, _ref, _ref1;
chr_lengths = [];
chr_seen = [];
@@ -139,7 +139,7 @@ Manhattan_Plot = (function() {
return this.total_length += parseFloat(chr_lengths[chr_lengths.length - 1]);
};
- Manhattan_Plot.prototype.show_marker_in_table = function(marker_info) {
+ Lod_Chart.prototype.show_marker_in_table = function(marker_info) {
var marker_name;
console.log("in show_marker_in_table");
@@ -150,13 +150,13 @@ Manhattan_Plot = (function() {
}
};
- Manhattan_Plot.prototype.create_svg = function() {
+ Lod_Chart.prototype.create_svg = function() {
var svg;
svg = d3.select("#manhattan_plot").append("svg").attr("class", "manhattan_plot").attr("width", this.width + this.x_buffer).attr("height", this.height + this.y_buffer).append("g");
return svg;
};
- Manhattan_Plot.prototype.create_graph = function() {
+ Lod_Chart.prototype.create_graph = function() {
this.create_legend();
this.add_border();
this.add_x_axis();
@@ -168,12 +168,12 @@ Manhattan_Plot = (function() {
return this.add_plot_points();
};
- Manhattan_Plot.prototype.create_legend = function() {
+ Lod_Chart.prototype.create_legend = function() {
this.svg.append("text").attr("class", "legend").text("Trait: " + this.this_trait + " : " + this.data_set).attr("x", this.x_buffer).attr("y", 20).attr("dx", "0em").attr("text-anchor", "left").attr("font-family", "sans-serif").attr("font-size", "16px").attr("fill", "black");
return this.svg.append("text").attr("class", "legend").text("MAF: " + this.maf).attr("x", this.x_buffer).attr("y", 38).attr("dx", "0em").attr("text-anchor", "left").attr("font-family", "sans-serif").attr("font-size", "16px").attr("fill", "black");
};
- Manhattan_Plot.prototype.add_border = function() {
+ Lod_Chart.prototype.add_border = function() {
var border_coords;
border_coords = [[this.y_buffer + this.legend_buffer, this.height, this.x_buffer, this.x_buffer], [this.y_buffer + this.legend_buffer, this.height, this.width, this.width], [this.y_buffer + this.legend_buffer, this.y_buffer + this.legend_buffer, this.x_buffer, this.width], [this.height, this.height, this.x_buffer, this.width]];
return this.svg.selectAll("line").data(border_coords).enter().append("line").attr("y1", (function(_this) {
@@ -195,7 +195,7 @@ Manhattan_Plot = (function() {
})(this)).style("stroke", "#000");
};
- Manhattan_Plot.prototype.create_scales = function() {
+ Lod_Chart.prototype.create_scales = function() {
console.log("y_axis_filter:", this.y_axis_filter);
if ('24' in this.chromosomes) {
console.log("@chromosomes[24]:", this.chromosomes['24']);
@@ -209,7 +209,7 @@ Manhattan_Plot = (function() {
return this.y_scale = d3.scale.linear().domain([this.y_axis_filter, this.y_max]).range([this.height, this.y_buffer + this.legend_buffer]);
};
- Manhattan_Plot.prototype.create_x_axis_tick_values = function() {
+ Lod_Chart.prototype.create_x_axis_tick_values = function() {
var chr_ticks, i, length, tick, tick_count, tick_val, tick_vals, val, _i, _j, _k, _len, _ref, _ref1, _ref2;
tick_vals = [];
for (val = _i = 25, _ref = this.cumulative_chr_lengths[0]; 25 <= _ref ? _i <= _ref : _i >= _ref; val = 25 <= _ref ? ++_i : --_i) {
@@ -235,7 +235,7 @@ Manhattan_Plot = (function() {
return tick_vals;
};
- Manhattan_Plot.prototype.add_x_axis = function() {
+ Lod_Chart.prototype.add_x_axis = function() {
var next_chr, tmp_tick_val;
this.xAxis = d3.svg.axis().scale(this.x_scale).orient("bottom").tickValues(this.create_x_axis_tick_values());
next_chr = 1;
@@ -267,16 +267,16 @@ Manhattan_Plot = (function() {
})(this));
};
- Manhattan_Plot.prototype.add_y_axis = function() {
+ Lod_Chart.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);
};
- Manhattan_Plot.prototype.add_axis_labels = function() {
+ Lod_Chart.prototype.add_axis_labels = function() {
return this.svg.append("text").attr("transform", "rotate(-90)").attr("y", 0 - (this.height / 2)).attr("x", this.x_buffer).attr("dy", "1em").style("text-anchor", "middle").text("LOD Score");
};
- Manhattan_Plot.prototype.add_chr_lines = function() {
+ Lod_Chart.prototype.add_chr_lines = function() {
return this.svg.selectAll("line").data(this.cumulative_chr_lengths, (function(_this) {
return function(d) {
return d;
@@ -284,7 +284,7 @@ Manhattan_Plot = (function() {
})(this)).enter().append("line").attr("x1", this.x_scale).attr("x2", this.x_scale).attr("y1", this.y_buffer + this.legend_buffer).attr("y2", this.height).style("stroke", "#ccc");
};
- Manhattan_Plot.prototype.fill_chr_areas = function() {
+ Lod_Chart.prototype.fill_chr_areas = function() {
console.log("cumu_chr_lengths:", this.cumulative_chr_lengths);
console.log("example:", this.x_scale(this.cumulative_chr_lengths[0]));
return this.svg.selectAll("rect.chr_fill_area").data(_.zip(this.chr_lengths, this.cumulative_chr_lengths), (function(_this) {
@@ -338,7 +338,7 @@ Manhattan_Plot = (function() {
})(this));
};
- Manhattan_Plot.prototype.add_chr_labels = function() {
+ Lod_Chart.prototype.add_chr_labels = function() {
var chr_info, chr_names, key;
chr_names = [];
for (key in this.chromosomes) {
@@ -378,7 +378,7 @@ Manhattan_Plot = (function() {
})(this));
};
- Manhattan_Plot.prototype.add_plot_points = function() {
+ Lod_Chart.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]);
@@ -424,7 +424,7 @@ Manhattan_Plot = (function() {
})(this));
};
- Manhattan_Plot.prototype.redraw_plot = function(chr_ob) {
+ Lod_Chart.prototype.redraw_plot = function(chr_ob) {
console.log("chr_name is:", chr_ob[0]);
console.log("chr_length is:", chr_ob[1]);
$('#manhattan_plot').remove();
@@ -432,23 +432,21 @@ Manhattan_Plot = (function() {
return root.chr_plot = new Chr_Manhattan_Plot(600, 1200, chr_ob);
};
- Manhattan_Plot.prototype.create_zoom_pane = function() {
+ Lod_Chart.prototype.create_zoom_pane = function() {
var zoom;
zoom = d3.behavior.zoom().on("zoom", draw);
return this.svg.append("rect").attr("class", "pane").attr("width", this.width).attr("height", this.height).call(zoom);
};
- Manhattan_Plot.prototype.draw = function() {
+ Lod_Chart.prototype.draw = function() {
this.svg.select("g.x_axis").call(this.xAxis);
this.svg.select("g.y_axis").call(this.yAxis);
this.svg.select("path.area").attr("d", area);
return this.svg.select("path.line").attr("d", line);
};
- return Manhattan_Plot;
+ return Lod_Chart;
})();
-root.Manhattan_Plot = Manhattan_Plot;
-
-new Manhattan_Plot(600, 1200);
+new Lod_Chart(600, 1200);
diff --git a/wqflask/wqflask/static/new/javascript/search_results.coffee b/wqflask/wqflask/static/new/javascript/search_results.coffee
index 84cf7f0a..c4e6b1a2 100755
--- a/wqflask/wqflask/static/new/javascript/search_results.coffee
+++ b/wqflask/wqflask/static/new/javascript/search_results.coffee
@@ -44,16 +44,16 @@ $ ->
for item in buttons
console.log(" processing item:", item)
text = $(item).html()
- if text.indexOf("Records") == -1
- text = text.replace("Record", "Records")
- $(item).html(text)
+ #if text.indexOf("Records") == -1
+ # text = text.replace("Record", "Records")
+ # $(item).html(text)
else
console.log("in loop")
for item in buttons
console.log(" processing item:", item)
text = $(item).html()
- text = text.replace("Records", "Record")
- $(item).html(text)
+ #text = text.replace("Records", "Record")
+ #$(item).html(text)
# remove is only used by collections view
diff --git a/wqflask/wqflask/static/new/javascript/search_results.js b/wqflask/wqflask/static/new/javascript/search_results.js
index e6f55624..6c077c67 100755
--- a/wqflask/wqflask/static/new/javascript/search_results.js
+++ b/wqflask/wqflask/static/new/javascript/search_results.js
@@ -49,13 +49,7 @@ $(function() {
for (_k = 0, _len2 = buttons.length; _k < _len2; _k++) {
item = buttons[_k];
console.log(" processing item:", item);
- text = $(item).html();
- if (text.indexOf("Records") === -1) {
- text = text.replace("Record", "Records");
- _results.push($(item).html(text));
- } else {
- _results.push(void 0);
- }
+ _results.push(text = $(item).html());
}
return _results;
} else {
@@ -64,9 +58,7 @@ $(function() {
for (_l = 0, _len3 = buttons.length; _l < _len3; _l++) {
item = buttons[_l];
console.log(" processing item:", item);
- text = $(item).html();
- text = text.replace("Records", "Record");
- _results1.push($(item).html(text));
+ _results1.push(text = $(item).html());
}
return _results1;
}
diff --git a/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.coffee b/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.coffee
index fc687c7a..72d2bbe4 100755
--- a/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.coffee
+++ b/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.coffee
@@ -171,11 +171,14 @@ $ ->
#return false
)
+
+
$("#rqtl_geno_compute").click(() =>
$("#progress_bar_container").modal()
url = "/marker_regression"
$('input[name=method]').val("rqtl_geno")
$('input[name=num_perm]').val($('input[name=num_perm_rqtl_geno]').val())
+ $('input[name=manhattan_plot]').val($('input[name=manhattan_plot_rqtl]:checked').val())
$('input[name=control_marker]').val($('input[name=control_rqtl_geno]').val())
form_data = $('#trait_data_form').serialize()
console.log("form_data is:", form_data)
diff --git a/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js b/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js
index a8a42ffa..4eaceffe 100755
--- a/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js
+++ b/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js
@@ -137,6 +137,7 @@ $(function() {
url = "/marker_regression";
$('input[name=method]').val("rqtl_geno");
$('input[name=num_perm]').val($('input[name=num_perm_rqtl_geno]').val());
+ $('input[name=manhattan_plot]').val($('input[name=manhattan_plot_rqtl]:checked').val());
$('input[name=control_marker]').val($('input[name=control_rqtl_geno]').val());
form_data = $('#trait_data_form').serialize();
console.log("form_data is:", form_data);
diff --git a/wqflask/wqflask/templates/correlation_page.html b/wqflask/wqflask/templates/correlation_page.html
index 61d17a22..88f6d65a 100755
--- a/wqflask/wqflask/templates/correlation_page.html
+++ b/wqflask/wqflask/templates/correlation_page.html
@@ -1,6 +1,5 @@
{% extends "base.html" %}
{% block css %}
- <link rel="stylesheet" type="text/css" href="/static/packages/jqplot/jquery.jqplot.min.css" />
<link rel="stylesheet" type="text/css" href="/static/new/packages/DataTables/css/jquery.dataTables.css" />
<link rel="stylesheet" type="text/css" href="/static/packages/DT_bootstrap/DT_bootstrap.css" />
<link rel="stylesheet" type="text/css" href="/static/packages/TableTools/media/css/TableTools.css" />
diff --git a/wqflask/wqflask/templates/marker_regression.html b/wqflask/wqflask/templates/marker_regression.html
index 451b3754..51aab95c 100755
--- a/wqflask/wqflask/templates/marker_regression.html
+++ b/wqflask/wqflask/templates/marker_regression.html
@@ -88,7 +88,8 @@
<script language="javascript" type="text/javascript" src="/static/new/packages/jsPDF/jspdf.plugin.from_html.js"></script>-->
<script language="javascript" type="text/javascript" src="/static/new/javascript/panelutil.js"></script>
<script language="javascript" type="text/javascript" src="/static/new/javascript/chr_manhattan_plot.js"></script>
- <script language="javascript" type="text/javascript" src="/static/new/javascript/manhattan_plot.js"></script>
+<!-- <script language="javascript" type="text/javascript" src="/static/new/javascript/manhattan_plot.js"></script>-->
+ <script language="javascript" type="text/javascript" src="/static/new/javascript/lod_chart.js"></script>
<script language="javascript" type="text/javascript" src="/static/new/javascript/create_manhattan_plot.js"></script>
<script language="javascript" type="text/javascript" src="/static/new/packages/DataTables/js/jquery.js"></script>
<script language="javascript" type="text/javascript" src="/static/new/packages/DataTables/js/jquery.dataTables.min.js"></script>
diff --git a/wqflask/wqflask/templates/search_result_page.html b/wqflask/wqflask/templates/search_result_page.html
index 5bd6534c..0baac2d3 100755
--- a/wqflask/wqflask/templates/search_result_page.html
+++ b/wqflask/wqflask/templates/search_result_page.html
@@ -1,5 +1,10 @@
{% extends "base.html" %}
{% block title %}Search Results{% endblock %}
+{% block css %}
+ <link rel="stylesheet" type="text/css" href="/static/new/packages/DataTables/css/jquery.dataTables.css" />
+ <link rel="stylesheet" type="text/css" href="/static/packages/DT_bootstrap/DT_bootstrap.css" />
+ <link rel="stylesheet" type="text/css" href="/static/packages/TableTools/media/css/TableTools.css" />
+{% endblock %}
{% block content %}
<!-- Start of body -->
{{ header("Search Results",
@@ -27,7 +32,7 @@
Check records below and click Add button to add to selection.</p>
<div class="bs-docs-example">
- <table class="table table-hover" id='trait_table'>
+ <table class="table table-hover table-striped" id='trait_table'>
<thead>
<tr>
{% for header in header_fields %}
@@ -78,7 +83,8 @@
</table>
<br />
-
+ <br />
+
<button class="btn" id="select_all"><i class="icon-ok"></i> Select All</button>
<button class="btn" id="deselect_all"><i class="icon-remove"></i> Deselect All</button>
<button class="btn" id="invert"><i class="icon-resize-vertical"></i> Invert</button>
@@ -95,4 +101,24 @@
{% block js %}
<script type="text/javascript" src="/static/new/javascript/search_results.js"></script>
+
+ <script language="javascript" type="text/javascript" src="/static/new/packages/DataTables/js/jquery.dataTables.min.js"></script>
+ <script language="javascript" type="text/javascript" src="/static/new/packages/DataTables/js/dataTables.naturalSort.js"></script>
+ <script language="javascript" type="text/javascript" src="/static/packages/DT_bootstrap/DT_bootstrap.js"></script>
+ <script language="javascript" type="text/javascript" src="/static/packages/TableTools/media/js/TableTools.min.js"></script>
+ <script type="text/javascript" charset="utf-8">
+ $(document).ready( function () {
+ console.time("Creating table");
+ $('#trait_table').dataTable( {
+ //"sDom": "<<'span3'l><'span3'T><'span4'f>'row-fluid'r>t<'row-fluid'<'span6'i><'span6'p>>",
+ "sDom": "lftipr",
+ "iDisplayLength": 50,
+ "bLengthChange": true,
+ "bDeferRender": true,
+ "bSortClasses": false
+ } );
+ console.timeEnd("Creating table");
+ });
+ </script>
+
{% endblock %}
diff --git a/wqflask/wqflask/templates/show_trait.html b/wqflask/wqflask/templates/show_trait.html
index cbb06285..7bbebd72 100755
--- a/wqflask/wqflask/templates/show_trait.html
+++ b/wqflask/wqflask/templates/show_trait.html
@@ -109,7 +109,8 @@
console.time("Creating table");
{% if sample_groups[0].se_exists() %}
- $('#samples_primary, #samples_other').find("tr.outlier").css('background-color', 'yellow').dataTable( {
+ $('#samples_primary, #samples_other').find("tr.outlier").css('background-color', 'yellow')
+ $('#samples_primary, #samples_other').dataTable( {
//"sDom": "<<'span3'l><'span3'T><'span4'f>'row-fluid'r>t<'row-fluid'<'span6'i><'span6'p>>",
"aoColumns": [
{ "sType": "natural" },
diff --git a/wqflask/wqflask/templates/show_trait_mapping_tools.html b/wqflask/wqflask/templates/show_trait_mapping_tools.html
index c58b7729..e5d96490 100755
--- a/wqflask/wqflask/templates/show_trait_mapping_tools.html
+++ b/wqflask/wqflask/templates/show_trait_mapping_tools.html
@@ -135,14 +135,14 @@
<div class="tab-pane" id="pylmm">
<div class="control-group" id="display_all_div">
- <label class="control-label">Display all</label>
+ <label class="control-label">Manhattan Plot</label>
<div class="controls">
<label class="radio inline">
- <input type="radio" name="display_all_pylmm" value="True" checked>
+ <input type="radio" name="manhattan_plot_pylmm" value=true checked>
Yes
</label>
<label class="radio inline">
- <input type="radio" name="display_all_pylmm" value="False">
+ <input type="radio" name="manhattan_plot_pylmm" value=false>
No
</label>
</div>
@@ -185,9 +185,27 @@
<div class="control-group">
<label for="control_rqtl_geno" class="control-label">Control Marker</label>
<div class="controls">
- <input name="control_rqtl_geno" value="{{ nearest_marker }}" type="text" />
+ {% if dataset.type == 'ProbeSet' %}
+ <input name="control_rqtl_geno" value="{{ nearest_marker1+","+nearest_marker2 }}" type="text" />
+ {% else %}
+ <input name="control_rqtl_geno" value="" type="text" />
+ {% endif %}
</div>
</div>
+ <div class="control-group mapping_method_fields">
+ <label class="control-label">Manhattan Plot</label>
+ <div class="controls">
+ <label class="radio inline">
+ <input type="radio" name="manhattan_plot_rqtl" value=true checked>
+ Yes
+ </label>
+ <label class="radio inline">
+ <input type="radio" name="manhattan_plot_rqtl" value=false>
+ No
+ </label>
+ </div>
+ </div>
+
<div class="control-group">
<div class="controls">
@@ -199,7 +217,7 @@
</button>
</div>
</div>
-
+
</div>
{% if dataset.group.species == 'human' %}
diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py
index 26e690d4..869bd621 100755
--- a/wqflask/wqflask/views.py
+++ b/wqflask/wqflask/views.py
@@ -254,6 +254,7 @@ def marker_regression_page():
'suggestive',
'num_perm',
'maf',
+ 'manhattan_plot',
'control_marker',
'control_marker_db'
)
@@ -337,7 +338,7 @@ def interval_mapping_page():
'dataset',
'mapping_method',
'chromosome',
- 'num_permutations',
+ 'num_perm',
'do_bootstraps',
'display_additive',
'default_control_locus',