diff options
author | Zachary Sloan | 2014-08-12 21:24:24 +0000 |
---|---|---|
committer | Zachary Sloan | 2014-08-12 21:24:24 +0000 |
commit | 18e3a1da1a96e8585746e9e4e4c5f5874512d94e (patch) | |
tree | bb479e3ec921240c3d61f5221fc3b6be6913fb5f /wqflask | |
parent | 7ae4ea4cfd2bc06e71a23cd92d725a6b8a40d06e (diff) | |
download | genenetwork2-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
Diffstat (limited to 'wqflask')
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', |