aboutsummaryrefslogtreecommitdiff
path: root/wqflask
diff options
context:
space:
mode:
authorZachary Sloan2013-08-13 18:23:05 -0500
committerZachary Sloan2013-08-13 18:23:05 -0500
commit6379959af53b2ec595b85ccdc099c6f14adf0381 (patch)
tree93b73985117dfb58d41ef059834582e120dbcf59 /wqflask
parentf155e26112f088c908c0654a57a40ff1f8fe23cc (diff)
downloadgenenetwork2-6379959af53b2ec595b85ccdc099c6f14adf0381.tar.gz
Added several test files and the file with the class that
they import (browser_test.py)
Diffstat (limited to 'wqflask')
-rwxr-xr-xwqflask/base/data_set.py13
-rw-r--r--wqflask/maintenance/browser_test.py60
-rw-r--r--wqflask/maintenance/correlation_matrix_test.py117
-rw-r--r--wqflask/maintenance/correlation_test.py110
-rw-r--r--wqflask/maintenance/marker_regression_test.py118
-rwxr-xr-xwqflask/wqflask/show_trait/show_trait.py6
6 files changed, 416 insertions, 8 deletions
diff --git a/wqflask/base/data_set.py b/wqflask/base/data_set.py
index 017c6052..091433a6 100755
--- a/wqflask/base/data_set.py
+++ b/wqflask/base/data_set.py
@@ -168,7 +168,8 @@ class Markers(object):
for marker, p_value in itertools.izip(self.markers, p_values):
marker['p_value'] = p_value
- print("p_value is:", marker['p_value'])
+ if math.isnan(marker['p_value']):
+ print("p_value is:", marker['p_value'])
marker['lod_score'] = -math.log10(marker['p_value'])
#Using -log(p) for the LRS; need to ask Rob how he wants to get LRS from p-values
marker['lrs_value'] = -math.log10(marker['p_value']) * 4.61
@@ -436,7 +437,7 @@ class DataSet(object):
except TypeError:
print("Dataset {} is not yet available in GeneNetwork.".format(self.name))
pass
-
+
def get_trait_data(self):
self.samplelist = self.group.samplelist + self.group.parlist + self.group.f1list
query = """
@@ -493,12 +494,12 @@ class DataSet(object):
if self.type == "Publish":
query += """
- WHERE {}XRef.InbredSetId = {}Freeze.InbredSetId
+ WHERE {}XRef.PublicationId = {}Freeze.Id
and {}Freeze.Name = '{}'
- and {}.Id = {}XRef.PhenotypeId
+ and {}.Id = {}XRef.{}Id
order by {}.Id
- """.format(*mescape(self.type, self.type, self.type, self.name,
- dataset_type, self.type, dataset_type ))
+ """.format(*mescape(self.type, self.type, self.type, self.type,
+ self.name, dataset_type, self.type, self.type, dataset_type))
else:
query += """
WHERE {}XRef.{}FreezeId = {}Freeze.Id
diff --git a/wqflask/maintenance/browser_test.py b/wqflask/maintenance/browser_test.py
new file mode 100644
index 00000000..ecf8e1ca
--- /dev/null
+++ b/wqflask/maintenance/browser_test.py
@@ -0,0 +1,60 @@
+from __future__ import print_function, division, absolute_import
+
+from time import sleep
+
+import selenium
+from selenium import webdriver
+from selenium.common.exceptions import NoSuchElementException, ElementNotVisibleException
+from selenium.webdriver.common.keys import Keys
+
+class Test(object):
+ def __init__(self):
+ self.browser = webdriver.Chrome('/home/gn2/gn2/webtests/chromedriver')
+
+ def get(self, url):
+ self.browser.get(url)
+ sleep(5)
+ self.title()
+
+ def click(self, xpath_selector):
+ el = self.browser.find_element_by_xpath(xpath_selector)
+ text = el.text.strip() or el.get_attribute("value").strip()
+ el.click()
+ print("clicked:", text)
+ sleep(2)
+
+ def click_option(self, xpath_selector, option_text):
+ el = self.browser.find_element_by_xpath(xpath_selector)
+ for option in el.find_elements_by_tag_name('option'):
+ if option.text == option_text:
+ option.click() # select() in earlier versions of webdriver
+ break
+ sleep(2)
+
+ def enter_text(self, xpath_selector, text):
+ el = self.browser.find_element_by_xpath(xpath_selector)
+ sleep(10)
+ el.send_keys(text)
+ sleep(5)
+ # Just in case things get mangled by JavaScript, etc. we print the text for testing
+ self.get_text(xpath_selector)
+
+ def get_text(self, xpath_selector):
+ el = self.browser.find_element_by_xpath(xpath_selector)
+ text = el.text.strip() or el.get_attribute("value").strip()
+ print("text:", text)
+
+ def switch_window(self):
+ self.browser.switch_to_window(self.browser.window_handles[-1])
+ sleep(2)
+ self.title()
+ sleep(2)
+
+
+ def title(self):
+ print("title:", self.browser.title)
+
+
+#if __name__ == '__main__':
+# import doctest
+# doctest.testmod() \ No newline at end of file
diff --git a/wqflask/maintenance/correlation_matrix_test.py b/wqflask/maintenance/correlation_matrix_test.py
new file mode 100644
index 00000000..2983a76b
--- /dev/null
+++ b/wqflask/maintenance/correlation_matrix_test.py
@@ -0,0 +1,117 @@
+"""
+
+Test Correlation matrix
+
+>>> test = Test()
+>>> test.get("http://genenetwork.org/")
+title: GeneNetwork
+
+Choose the type
+>>> test.click_option('''//*[@id="tissue"]''', 'Hippocampus mRNA')
+
+Enter the Get Any
+>>> test.enter_text('''//*[@id="tfor"]''', 'grin2b')
+text: grin2b
+
+Search
+>>> test.click('//*[@id="btsearch"]')
+
+Select the first 4 records
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/p/table/tbody/tr[3]/td/div/table/tbody/tr[2]/td/input''')
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/p/table/tbody/tr[3]/td/div/table/tbody/tr[3]/td/input''')
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/p/table/tbody/tr[3]/td/div/table/tbody/tr[4]/td/input''')
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/p/table/tbody/tr[3]/td/div/table/tbody/tr[5]/td/input''')
+
+>>> sleep(5)
+
+Add to collection page
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/p/table/tbody/tr[1]/td/table/tbody/tr[1]/td[4]/a''')
+
+>>> sleep(5)
+
+A new window is created, so we switch to it
+>>> test.switch_window()
+title: BXD Trait Collection
+
+Select all records
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/a/img''')
+
+Click Matrix
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/table/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr/td[2]/a/img''')
+
+Another new window
+>>> test.switch_window()
+title: Correlation Matrix
+
+Sleep a bunch because this can take a while
+>>> sleep(10)
+
+Ensure that the correlation between Trait3 (HC_M2_0606_P::1457003_at) and Trait4 (HC_M2_0606_P::1422223_at) is 0.608
+>>> test.get_text('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/blockquote/table/tbody/tr[5]/td[5]/a/font''')
+text: 0.608
+
+"""
+
+from __future__ import print_function, division, absolute_import
+
+from time import sleep
+
+import selenium
+from selenium import webdriver
+from selenium.common.exceptions import NoSuchElementException, ElementNotVisibleException
+from selenium.webdriver.common.keys import Keys
+
+from browser_test import Test
+#
+#class Test(object):
+# def __init__(self):
+# self.browser = webdriver.Chrome('/home/gn2/gn2/webtests/chromedriver')
+#
+# def get(self, url):
+# self.browser.get(url)
+# sleep(5)
+# self.title()
+#
+# def click(self, xpath_selector):
+# el = self.browser.find_element_by_xpath(xpath_selector)
+# #text = el.text.strip() or el.get_attribute("value").strip()
+# el.click()
+# #print("clicked:", text)
+# sleep(2)
+#
+# def click_option(self, xpath_selector, option_text):
+# el = self.browser.find_element_by_xpath(xpath_selector)
+# for option in el.find_elements_by_tag_name('option'):
+# if option.text == option_text:
+# option.click() # select() in earlier versions of webdriver
+# break
+# sleep(2)
+#
+# def enter_text(self, xpath_selector, text):
+# el = self.browser.find_element_by_xpath(xpath_selector)
+# sleep(10)
+# el.send_keys(text)
+# sleep(5)
+# # Just in case things get mangled by JavaScript, etc. we print the text for testing
+# self.get_text(xpath_selector)
+#
+# def get_text(self, xpath_selector):
+# el = self.browser.find_element_by_xpath(xpath_selector)
+# text = el.text.strip() or el.get_attribute("value").strip()
+# print("text:", text)
+#
+# def switch_window(self):
+# self.browser.switch_to_window(self.browser.window_handles[-1])
+# sleep(2)
+# self.title()
+# sleep(2)
+#
+#
+# def title(self):
+# print("title:", self.browser.title)
+#
+#
+#
+if __name__ == '__main__':
+ import doctest
+ doctest.testmod()
diff --git a/wqflask/maintenance/correlation_test.py b/wqflask/maintenance/correlation_test.py
new file mode 100644
index 00000000..aaf3f7df
--- /dev/null
+++ b/wqflask/maintenance/correlation_test.py
@@ -0,0 +1,110 @@
+"""
+Test calculate correlations
+
+>>> test = Test()
+>>> test.get("http://genenetwork.org")
+title: GeneNetwork
+
+Choose the type
+>>> test.click_option('''//*[@id="tissue"]''', 'Hippocampus mRNA')
+
+Enter the Get Any
+>>> test.enter_text('''//*[@id="tfor"]''', 'ssh')
+text: ssh
+
+Search
+>>> test.click('//*[@id="btsearch"]')
+clicked: Search
+
+Choose the first result
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/p/table/tbody/tr[3]/td/div/table/tbody/tr[2]/td[2]/a''')
+clicked: 1455854_a_at
+
+A new window is created, so we switch to it
+>>> test.switch_window()
+title: Hippocampus M430v2 BXD 06/06 PDNN : 1455854_a_at: Display Trait
+
+Click on Calculate Correlations
+>>> test.click('''//*[@id="title3"]''')
+clicked: Calculate Correlations
+
+Click on Compute
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/p[6]/table/tbody/tr/td/div/div/span/table/tbody/tr/td/input[3]''')
+clicked: Compute
+
+Another new window
+>>> test.switch_window()
+title: Correlation
+
+Sleep a bunch because this can take a while
+>>> sleep(60)
+
+Ensure the Sample rho is the exepcted 1.000 because it should be the same record
+>>> test.get_text('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/table/tbody/tr[2]/td/div/table/tbody/tr[2]/td[9]/a''')
+text: 1.000
+
+"""
+
+from __future__ import print_function, division, absolute_import
+
+from time import sleep
+
+
+import selenium
+from selenium import webdriver
+from selenium.common.exceptions import NoSuchElementException, ElementNotVisibleException
+from selenium.webdriver.common.keys import Keys
+
+
+class Test(object):
+ def __init__(self):
+ self.browser = webdriver.Chrome('/home/gn2/gn2/webtests/chromedriver')
+
+ def get(self, url):
+ self.browser.get(url)
+ sleep(5)
+ self.title()
+
+ def click(self, xpath_selector):
+ el = self.browser.find_element_by_xpath(xpath_selector)
+ text = el.text.strip() or el.get_attribute("value").strip()
+ el.click()
+ print("clicked:", text)
+ sleep(2)
+
+ def click_option(self, xpath_selector, option_text):
+ el = self.browser.find_element_by_xpath(xpath_selector)
+ for option in el.find_elements_by_tag_name('option'):
+ if option.text == option_text:
+ option.click() # select() in earlier versions of webdriver
+ break
+ sleep(2)
+
+ def enter_text(self, xpath_selector, text):
+ el = self.browser.find_element_by_xpath(xpath_selector)
+ sleep(10)
+ el.send_keys(text)
+ sleep(5)
+ # Just in case things get mangled by JavaScript, etc. we print the text for testing
+ self.get_text(xpath_selector)
+
+ def get_text(self, xpath_selector):
+ el = self.browser.find_element_by_xpath(xpath_selector)
+ text = el.text.strip() or el.get_attribute("value").strip()
+ print("text:", text)
+
+ def switch_window(self):
+ self.browser.switch_to_window(self.browser.window_handles[-1])
+ sleep(2)
+ self.title()
+ sleep(2)
+
+
+ def title(self):
+ print("title:", self.browser.title)
+
+
+
+if __name__ == '__main__':
+ import doctest
+ doctest.testmod()
diff --git a/wqflask/maintenance/marker_regression_test.py b/wqflask/maintenance/marker_regression_test.py
new file mode 100644
index 00000000..f4840bd7
--- /dev/null
+++ b/wqflask/maintenance/marker_regression_test.py
@@ -0,0 +1,118 @@
+"""
+Test calculate correlations
+
+>>> test = Test()
+>>> test.get("http://genenetwork.org")
+title: GeneNetwork
+
+Choose the type
+>>> test.click_option('''//*[@id="tissue"]''', 'Liver mRNA')
+clicked: Liver mRNA
+
+Enter the Get Any
+>>> test.enter_text('''//*[@id="tfor"]''', 'grin2b')
+text: grin2b
+
+Search
+>>> test.click('//*[@id="btsearch"]')
+clicked: Search
+
+Choose the second result
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/p/table/tbody/tr[3]/td/div/table/tbody/tr[3]/td[2]/a''')
+clicked: 1431700_at_A
+
+A new window is created, so we switch to it
+>>> test.switch_window()
+title: GSE16780 UCLA Hybrid MDP Liver Affy HT M430A (Sep11) RMA : 1431700_at_A: Display Trait
+
+Click on Mapping Tools
+>>> test.click('''//*[@id="title4"]''')
+clicked: Mapping Tools
+
+Click on Marker Regression tab
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/p[8]/table/tbody/tr/td/div/ul/li[2]/a''')
+clicked: Marker Regression
+
+Click on Compute
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/p[8]/table/tbody/tr/td/div/div[2]/span/table/tbody/tr/td/input''')
+clicked: Compute
+
+Another new window
+>>> test.switch_window()
+title: Genome Association Result
+
+Sleep a bunch because this can take a while
+>>> sleep(60)
+
+Ensure that the LRS of the top record is the exepcted value
+>>> test.get_text('''/html/body/table/tbody/tr[3]/td/table/tbody/tr[4]/td/table/tbody/tr/td/div/table/tbody/tr[2]/td[2]''')
+text: 11.511
+
+"""
+
+from __future__ import print_function, division, absolute_import
+
+from browser_test import Test
+
+#
+#from time import sleep
+#
+#
+#import selenium
+#from selenium import webdriver
+#from selenium.common.exceptions import NoSuchElementException, ElementNotVisibleException
+#from selenium.webdriver.common.keys import Keys
+#
+#
+#class Test(object):
+# def __init__(self):
+# self.browser = webdriver.Chrome('/home/gn2/gn2/webtests/chromedriver')
+#
+# def get(self, url):
+# self.browser.get(url)
+# sleep(5)
+# self.title()
+#
+# def click(self, xpath_selector):
+# el = self.browser.find_element_by_xpath(xpath_selector)
+# text = el.text.strip() or el.get_attribute("value").strip()
+# el.click()
+# print("clicked:", text)
+# sleep(2)
+#
+# def click_option(self, xpath_selector, option_text):
+# el = self.browser.find_element_by_xpath(xpath_selector)
+# for option in el.find_elements_by_tag_name('option'):
+# if option.text == option_text:
+# option.click() # select() in earlier versions of webdriver
+# break
+# sleep(2)
+#
+# def enter_text(self, xpath_selector, text):
+# el = self.browser.find_element_by_xpath(xpath_selector)
+# sleep(10)
+# el.send_keys(text)
+# sleep(5)
+# # Just in case things get mangled by JavaScript, etc. we print the text for testing
+# self.get_text(xpath_selector)
+#
+# def get_text(self, xpath_selector):
+# el = self.browser.find_element_by_xpath(xpath_selector)
+# text = el.text.strip() or el.get_attribute("value").strip()
+# print("text:", text)
+#
+# def switch_window(self):
+# self.browser.switch_to_window(self.browser.window_handles[-1])
+# sleep(2)
+# self.title()
+# sleep(2)
+#
+#
+# def title(self):
+# print("title:", self.browser.title)
+
+
+
+if __name__ == '__main__':
+ import doctest
+ doctest.testmod()
diff --git a/wqflask/wqflask/show_trait/show_trait.py b/wqflask/wqflask/show_trait/show_trait.py
index 7397c776..b0c96c56 100755
--- a/wqflask/wqflask/show_trait/show_trait.py
+++ b/wqflask/wqflask/show_trait/show_trait.py
@@ -1204,10 +1204,12 @@ class ShowTrait(object):
other_sample_names.append(sample)
if other_sample_names:
- parent_f1_samples = self.dataset.group.parlist + self.dataset.group.f1list
+ if self.dataset.group.parlist and self.dataset.group.f1list:
+ parent_f1_samples = self.dataset.group.parlist + self.dataset.group.f1list
other_sample_names.sort() #Sort other samples
- other_sample_names = parent_f1_samples + other_sample_names
+ if parent_f1_samples:
+ other_sample_names = parent_f1_samples + other_sample_names
other_samples = SampleList(dataset=self.dataset,
sample_names=other_sample_names,