diff options
-rwxr-xr-x | wqflask/base/data_set.py | 13 | ||||
-rw-r--r-- | wqflask/maintenance/browser_test.py | 60 | ||||
-rw-r--r-- | wqflask/maintenance/correlation_matrix_test.py | 117 | ||||
-rw-r--r-- | wqflask/maintenance/correlation_test.py | 110 | ||||
-rw-r--r-- | wqflask/maintenance/marker_regression_test.py | 118 | ||||
-rwxr-xr-x | wqflask/wqflask/show_trait/show_trait.py | 6 |
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, |