aboutsummaryrefslogtreecommitdiff
path: root/wqflask
diff options
context:
space:
mode:
Diffstat (limited to 'wqflask')
-rwxr-xr-xwqflask/base/data_set.py8
-rw-r--r--wqflask/base/species.py16
-rwxr-xr-xwqflask/wqflask/show_trait/show_trait.py3
-rw-r--r--wqflask/wqflask/templates/show_trait_mapping_tools.html551
-rw-r--r--wqflask/wqflask/views.py8
5 files changed, 218 insertions, 368 deletions
diff --git a/wqflask/base/data_set.py b/wqflask/base/data_set.py
index 2182fe9e..612b9209 100755
--- a/wqflask/base/data_set.py
+++ b/wqflask/base/data_set.py
@@ -30,6 +30,7 @@ from htmlgen import HTMLgen2 as HT
import reaper
import webqtlConfig
+from base import species
from dbFunction import webqtlDatabaseFunction
from utility import webqtlUtil
@@ -145,7 +146,7 @@ class DataSet(object):
def __init__(self, name):
- assert name
+ assert name, "Need a name"
self.name = name
self.id = None
self.type = None
@@ -155,7 +156,10 @@ class DataSet(object):
self.check_confidentiality()
self.retrieve_other_names()
- self.group = DatasetGroup(self) # sets self.group and self.group_id
+
+ self.species = species.TheSpecies(self)
+ self.group = DatasetGroup(self) # sets self.group and self.group_id and gets genotype
+
def get_desc(self):
diff --git a/wqflask/base/species.py b/wqflask/base/species.py
new file mode 100644
index 00000000..98941ce5
--- /dev/null
+++ b/wqflask/base/species.py
@@ -0,0 +1,16 @@
+from __future__ import print_function, division
+
+
+class TheSpecies(object):
+ def __init__(self, dataset):
+ self.dataset = dataset
+
+ @property
+ def chromosomes(self):
+ chromosomes = [("All", -1)]
+
+ for counter, genotype in enumerate(self.dataset.group.genotype):
+ if len(genotype) > 1:
+ chromosomes.append((genotype.name, counter))
+
+ return chromosomes
diff --git a/wqflask/wqflask/show_trait/show_trait.py b/wqflask/wqflask/show_trait/show_trait.py
index 836d37ea..c605cb58 100755
--- a/wqflask/wqflask/show_trait/show_trait.py
+++ b/wqflask/wqflask/show_trait/show_trait.py
@@ -1354,7 +1354,8 @@ class ShowTrait(object):
return_results_menu_selected = return_results_menu_selected,)
- def dispMappingTools(self, fd, title4Body, this_trait):
+ def build_mapping_tools(self, this_trait):
+
_Species = webqtlDatabaseFunction.retrieveSpecies(cursor=self.cursor, group=fd.group)
diff --git a/wqflask/wqflask/templates/show_trait_mapping_tools.html b/wqflask/wqflask/templates/show_trait_mapping_tools.html
index 90498e9a..1109ded3 100644
--- a/wqflask/wqflask/templates/show_trait_mapping_tools.html
+++ b/wqflask/wqflask/templates/show_trait_mapping_tools.html
@@ -1,382 +1,203 @@
- <p class="sectionheader" id="title4" style="border-radius: 5px;">&nbsp;&nbsp;Mapping Tools</p>
-
- <p id="sectionbody4"></p>
-
- <table class="target2" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td>
- <div class="ui-tabs" id="mapping_tabs">
- <ul>
- <li><a href="#mappingtabs-1">Interval</a></li>
-
- <li><a href="#mappingtabs-2">Marker Regression</a></li>
-
- <li><a href="#mappingtabs-3">Composite</a></li>
-
- <li><a href="#mappingtabs-4">Pair-Scan</a></li>
- </ul>
-
- <div id="mappingtabs-1">
- <table cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td class="fs12 fwn" nowrap="on" valign="top">
- <table cellpadding="2" cellspacing="0" width="263px">
- <tr>
- <td><span class="ffl fwb fs12">Chromosome:</span></td>
-
- <td colspan="3"><select name="chromosomes1" size="1">
- <option value="-1">
- All
- </option>
-
- <option value="0">
- 1
- </option>
-
- <option value="1">
- 2
- </option>
-
- <option value="2">
- 3
- </option>
-
- <option value="3">
- 4
- </option>
-
- <option value="4">
- 5
- </option>
-
- <option value="5">
- 6
- </option>
-
- <option value="6">
- 7
- </option>
-
- <option value="7">
- 8
- </option>
-
- <option value="8">
- 9
- </option>
-
- <option value="9">
- 10
- </option>
-
- <option value="10">
- 11
- </option>
-
- <option value="11">
- 12
- </option>
-
- <option value="12">
- 13
- </option>
-
- <option value="13">
- 14
- </option>
-
- <option value="14">
- 15
- </option>
-
- <option value="15">
- 16
- </option>
-
- <option value="16">
- 17
- </option>
-
- <option value="17">
- 18
- </option>
-
- <option value="18">
- 19
- </option>
-
- <option value="19">
- X
- </option>
- </select></td>
- </tr>
-
- <tr>
- <td><span class="ffl fwb fs12">Mapping Scale:</span></td>
-
- <td><select name="scale1" size="1" onchange=
- "checkUncheck(window.document.dataInput.scale1.value, window.document.dataInput.permCheck1, window.document.dataInput.bootCheck1)">
- <option value="physic">
- Megabase
- </option>
-
- <option value="morgan">
- Centimorgan
- </option>
- </select></td>
- </tr>
- </table><br>
- <input type="checkbox" name="permCheck1" class="checkbox" checked>Permutation Test (n=2000)<br>
- <input type="checkbox" name="bootCheck1" class="checkbox">Bootstrap Test (n=2000)<br>
- <input type="checkbox" name="parentsf14regression1" class="checkbox">Use Parents<br>
- <input type="checkbox" name="applyVarianceSE1" class="checkbox">Use Weighted<br>
- <br>
- <input type="button" name="interval" class="btn" value=" Compute "><br>
- <br>
- </td>
- </tr>
-
- <tr>
+<div>
+ <h2>Mapping Tools</h2>
+
+ <div class="tabbable"> <!-- Only required for left/right tabs -->
+ <ul class="nav nav-tabs">
+ <li class="active">
+ <a href="#interval_mapping" data-toggle="tab">Interval Mapping</a>
+ </li>
+ <li>
+ <a href="#marker_regression" data-toggle="tab">Marker Regression</a>
+ </li>
+ <li>
+ <a href="#pair_scan" data-toggle="tab">Pair Scan</a>
+ </li>
+ </ul>
+
+ <div class="tab-content" style="padding-bottom: 9px; border-bottom: 1px solid #ddd;">
+ <div class="tab-pane active" id="interval_mapping">
+ <label for="chromosome">Chromosome: </label>
+ <select name="chromosome">
+ {% for name, value in dataset.species.chromosomes %}
+ <option value="{{ value }}">{{ name }}</option>
+ {% endfor %}
+ </select>
+ <br>
+ {% if dataset.group.genotype.Mbmap %}
+ <label for="scale">Scale: </label>
+ <select name="scale">
+ <option value="megabase">Megabase</option>
+ <option value="centimorgan">Centimorgan</option>
+ </select>
+ {% endif %}
+ <br>
+
+ <label for="use_permutations" class="checkbox">Permutation Test n=
+ <input type="checkbox" name="use_permutations" />
+ <input name="num_permutations" value="2000" />
+ </label>
+ <label for="use_bootstraps" class="checkbox">Bootstrap Test n=
+ <input type="checkbox" name="use_bootstraps" />
+ <input name="num_bootstraps" value="2000" />
+ </label>
+
+ <br>
+ <label class="checkbox">
+ <input type="checkbox" name="use_parents" /> Use Parents
+ </label>
+ <label class="checkbox">
+ <input type="checkbox" name="use_weighted" /> Use Weighted
+ </label>
+ <br>
+ <input type="button" id="interval_mapping" class="btn" value="Compute">
+ </div>
+ <div class="tab-pane" id="marker_regression">
+ <table cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td class="fs12 fwn" nowrap="on" valign="top">
+ <table cellpadding="2" cellspacing="0" width="263px">
+ <tr>
+ <td><span class="ffl fwb fs12"><strong>Display LRS greater than:</strong></span></td>
+
+ <td><input type="text" name="suggestive" size="5" maxlength="8"></td>
+ </tr>
+
+ <tr>
+ <td><input type="checkbox" name="displayAllLRS" class="checkbox"> <span class="ffl fs12">Display all LRS</span></td>
+ </tr>
+
+ <tr>
+ <td><input type="checkbox" name="parentsf14regression2" class="checkbox"> <span class="ffl fs12">Use Parents</span></td>
+ </tr>
+
+ <tr>
+ <td><input type="checkbox" name="applyVarianceSE2" class="checkbox"> <span class="ffl fs12">Use Weighted</span></td>
+ </tr>
+ </table><br>
+ <input type="button" name="marker" class="btn" value=" Compute "><br>
+ <br>
+ </td>
+ </tr>
+
+ <tr>
+ <td valign="top"><span class="fs12"><a href="/glossary.html#" target="_blank">Marker regression</a> computes and displays LRS
+ values for individual markers.<br>
+ This function also lists additive effects (phenotype units per allele) and<br>
+ dominance deviations for some datasets.<br></span><br></td>
+ </tr>
+ </table>
+ </div>
+
+ <div class="tab-pane" id="pair_scan">
+ <table cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td class="fs12 fwn" nowrap="on">
+ <table cellpadding="2" cellspacing="0" width="232px">
+ <tr>
+ <td><span class="ffl fwb fs12"><strong>Sort by:</strong></span></td>
+
+ <td><select name="graphSort" size="1">
+ <option value="0">
+ LRS Full
+ </option>
+
+ <option value="1">
+ LRS Interact
+ </option>
+ </select></td>
+ </tr>
+
+ <tr>
+ <td><span class="ffl fwb fs12"><strong>Return:</strong></span></td>
+
+ <td><select name="pairScanReturn" size="1">
+ <option value="50">
+ top 50
+ </option>
+
+ <option value="100">
+ top 100
+ </option>
+
+ <option value="200">
+ top 200
+ </option>
+
+ <option value="500">
+ top 500
+ </option>
+ </select></td>
+ </tr>
+ </table><br>
+ <input type="checkbox" name="directPermuCheckbox" class="checkbox" checked><span class="ffl fs12">Permutation Test
+ (n=500)</span><br>
+ <br>
+ <input type="button" class="btn" value=" Compute " onclick="dataEditingFunc(this.form,'directPlot');"><br>
+ <br>
+ </td>
+ </tr>
+
+ <tr>
+ <td valign="top"><span><a href="/glossary.html#Pair_Scan" target="_blank">Pair-Scan</a> searches for pairs of chromosomal regions
+ that are<br>
+ involved in two-locus epistatic interactions.</span><br></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ </div>
+</div>
+
+<!-- <tr>
<td valign="top"><span class="fs12"><a href="/glossary.html#intmap" target="_blank">Interval Mapping</a> computes linkage maps
for the entire genome or single<br>
chromosomes. The <a href="/glossary.html#permutation" target="_blank">Permutation Test</a> estimates suggestive and
significant<br>
linkage scores. The <a href="/glossary.html#bootstrap" target="_blank">Bootstrap Test</a> estimates the precision of the QTL
location.</span><br></td>
- </tr>
- </table>
- </div>
-
- <div id="mappingtabs-2">
- <table cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td class="fs12 fwn" nowrap="on" valign="top">
- <table cellpadding="2" cellspacing="0" width="263px">
- <tr>
- <td><span class="ffl fwb fs12"><strong>Display LRS greater than:</strong></span></td>
-
- <td><input type="text" name="suggestive" size="5" maxlength="8"></td>
- </tr>
-
- <tr>
- <td><input type="checkbox" name="displayAllLRS" class="checkbox"> <span class="ffl fs12">Display all LRS</span></td>
- </tr>
-
- <tr>
- <td><input type="checkbox" name="parentsf14regression2" class="checkbox"> <span class="ffl fs12">Use Parents</span></td>
- </tr>
+ </tr>
- <tr>
- <td><input type="checkbox" name="applyVarianceSE2" class="checkbox"> <span class="ffl fs12">Use Weighted</span></td>
- </tr>
- </table><br>
- <input type="button" name="marker" class="btn" value=" Compute "><br>
- <br>
- </td>
- </tr>
- <tr>
- <td valign="top"><span class="fs12"><a href="/glossary.html#" target="_blank">Marker regression</a> computes and displays LRS
- values for individual markers.<br>
- This function also lists additive effects (phenotype units per allele) and<br>
- dominance deviations for some datasets.<br></span><br></td>
- </tr>
- </table>
- </div>
- <div id="mappingtabs-3">
- <table cellpadding="3" cellspacing="0" width="100%">
- <tr>
- <td class="fs12 fwn" nowrap="on" valign="top">
- <table cellpadding="2" cellspacing="0" width="325px">
- <tr>
- <td><span class="ffl fwb fs12">Chromosome:</span></td>
+ <tr>
+ <td><span class="ffl fwb fs12">Mapping Scale:</span></td>
- <td colspan="3"><select name="chromosomes2" size="1">
- <option value="-1">
- All
- </option>
+ <td><select name="scale2" size="1" onchange=
+ "checkUncheck(window.document.dataInput.scale2.value, window.document.dataInput.permCheck2, window.document.dataInput.bootCheck2)">
+ <option value="physic">
+ Megabase
+ </option>
- <option value="0">
- 1
- </option>
+ <option value="morgan">
+ Centimorgan
+ </option>
+ </select></td>
+ </tr>
- <option value="1">
- 2
- </option>
+ <tr>
+ <td><span class="ffl fwb fs12">Control Locus:</span></td>
- <option value="2">
- 3
- </option>
-
- <option value="3">
- 4
- </option>
-
- <option value="4">
- 5
- </option>
-
- <option value="5">
- 6
- </option>
-
- <option value="6">
- 7
- </option>
-
- <option value="7">
- 8
- </option>
-
- <option value="8">
- 9
- </option>
-
- <option value="9">
- 10
- </option>
-
- <option value="10">
- 11
- </option>
-
- <option value="11">
- 12
- </option>
-
- <option value="12">
- 13
- </option>
-
- <option value="13">
- 14
- </option>
-
- <option value="14">
- 15
- </option>
-
- <option value="15">
- 16
- </option>
-
- <option value="16">
- 17
- </option>
-
- <option value="17">
- 18
- </option>
-
- <option value="18">
- 19
- </option>
-
- <option value="19">
- X
- </option>
- </select></td>
- </tr>
-
- <tr>
- <td><span class="ffl fwb fs12">Mapping Scale:</span></td>
-
- <td><select name="scale2" size="1" onchange=
- "checkUncheck(window.document.dataInput.scale2.value, window.document.dataInput.permCheck2, window.document.dataInput.bootCheck2)">
- <option value="physic">
- Megabase
- </option>
-
- <option value="morgan">
- Centimorgan
- </option>
- </select></td>
- </tr>
-
- <tr>
- <td><span class="ffl fwb fs12">Control Locus:</span></td>
-
- <td><input type="text" name="controlLocus" class="controlLocus"></td>
- </tr>
- </table><br>
- <input type="checkbox" name="permCheck2" class="checkbox" checked>Permutation Test (n=2000)<br>
- <input type="checkbox" name="bootCheck2" class="checkbox">Bootstrap Test (n=2000)<br>
- <input type="checkbox" name="parentsf14regression3" class="checkbox">Use Parents<br>
- <br>
- <input type="button" name="composite" class="btn" value=" Compute "><br>
- <br>
- </td>
- </tr>
-
- <tr>
- <td valign="top"><span><a href="/glossary.html#Composite" target="_blank">Composite Interval Mapping</a> allows you to control
- for a single marker as<br>
- a cofactor. To find a control marker, run the <strong>Marker Regression</strong> function.</span><br></td>
- </tr>
- </table>
- </div>
-
- <div id="mappingtabs-4">
- <table cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td class="fs12 fwn" nowrap="on">
- <table cellpadding="2" cellspacing="0" width="232px">
- <tr>
- <td><span class="ffl fwb fs12"><strong>Sort by:</strong></span></td>
-
- <td><select name="graphSort" size="1">
- <option value="0">
- LRS Full
- </option>
-
- <option value="1">
- LRS Interact
- </option>
- </select></td>
- </tr>
-
- <tr>
- <td><span class="ffl fwb fs12"><strong>Return:</strong></span></td>
-
- <td><select name="pairScanReturn" size="1">
- <option value="50">
- top 50
- </option>
-
- <option value="100">
- top 100
- </option>
-
- <option value="200">
- top 200
- </option>
-
- <option value="500">
- top 500
- </option>
- </select></td>
- </tr>
- </table><br>
- <input type="checkbox" name="directPermuCheckbox" class="checkbox" checked><span class="ffl fs12">Permutation Test
- (n=500)</span><br>
- <br>
- <input type="button" class="btn" value=" Compute " onclick="dataEditingFunc(this.form,'directPlot');"><br>
- <br>
- </td>
- </tr>
-
- <tr>
- <td valign="top"><span><a href="/glossary.html#Pair_Scan" target="_blank">Pair-Scan</a> searches for pairs of chromosomal regions
- that are<br>
- involved in two-locus epistatic interactions.</span><br></td>
- </tr>
- </table>
- </div>
- </div>
+ <td><input type="text" name="controlLocus" class="controlLocus"></td>
+ </tr>
+ </table><br>
+ <input type="checkbox" name="permCheck2" class="checkbox" checked>Permutation Test (n=2000)<br>
+ <input type="checkbox" name="bootCheck2" class="checkbox">Bootstrap Test (n=2000)<br>
+ <input type="checkbox" name="parentsf14regression3" class="checkbox">Use Parents<br>
+ <br>
+ <input type="button" name="composite" class="btn" value=" Compute "><br>
+ <br>
</td>
</tr>
- </table>
+ <tr>
+ <td valign="top"><span><a href="/glossary.html#Composite" target="_blank">Composite Interval Mapping</a> allows you to control
+ for a single marker as<br>
+ a cofactor. To find a control marker, run the <strong>Marker Regression</strong> function.</span><br></td>
+ </tr>
- </div>
+
+ <tr>
+ <td valign="top"><span><a href="/glossary.html#Pair_Scan" target="_blank">Pair-Scan</a> searches for pairs of chromosomal regions
+ that are<br>
+ involved in two-locus epistatic interactions.</span><br></td>
+ </tr>-->
diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py
index 70d8cd20..503b0972 100644
--- a/wqflask/wqflask/views.py
+++ b/wqflask/wqflask/views.py
@@ -160,6 +160,14 @@ def corr_compute_page():
print("Made it to rendering")
return render_template("correlation_page.html", **template_vars.__dict__)
+@app.route("/int_mapping", methods=('POST',))
+def interval_mapping_page():
+ fd = webqtlFormData.webqtlFormData(request.form)
+ print("Have fd")
+ template_vars = CorrelationPage.CorrelationPage(fd)
+ print("Made it to rendering")
+ return render_template("correlation_page.html", **template_vars.__dict__)
+
# Todo: Can we simplify this? -Sam
def sharing_info_page():