aboutsummaryrefslogtreecommitdiff
path: root/wqflask/base
diff options
context:
space:
mode:
Diffstat (limited to 'wqflask/base')
-rwxr-xr-xwqflask/base/GeneralObject.py68
-rwxr-xr-xwqflask/base/JinjaPage.py28
-rwxr-xr-xwqflask/base/admin.py86
-rwxr-xr-xwqflask/base/cgiData.py66
-rwxr-xr-xwqflask/base/cookieData.py49
-rwxr-xr-xwqflask/base/data_set.py8
-rwxr-xr-xwqflask/base/footer.py6
-rwxr-xr-xwqflask/base/generate_probesetfreeze_file.py31
-rwxr-xr-xwqflask/base/header.py6
-rwxr-xr-xwqflask/base/indexBody.py290
-rwxr-xr-xwqflask/base/myCookie.py51
-rwxr-xr-xwqflask/base/sessionData.py50
-rwxr-xr-xwqflask/base/templatePage.py222
-rwxr-xr-xwqflask/base/trait.py31
-rwxr-xr-xwqflask/base/webqtlConfig.py6
-rwxr-xr-xwqflask/base/webqtlFormData.py6
16 files changed, 32 insertions, 972 deletions
diff --git a/wqflask/base/GeneralObject.py b/wqflask/base/GeneralObject.py
deleted file mode 100755
index 53d1357b..00000000
--- a/wqflask/base/GeneralObject.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (C) University of Tennessee Health Science Center, Memphis, TN.
-#
-# This program is free software: you can redistribute it and/or modify it
-# under the terms of the GNU Affero General Public License
-# as published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the GNU Affero General Public License for more details.
-#
-# This program is available from Source Forge: at GeneNetwork Project
-# (sourceforge.net/projects/genenetwork/).
-#
-# Contact Drs. Robert W. Williams and Xiaodong Zhou (2010)
-# at rwilliams@uthsc.edu and xzhou15@uthsc.edu
-#
-#
-#
-# This module is used by GeneNetwork project (www.genenetwork.org)
-#
-# Created by GeneNetwork Core Team 2010/08/10
-#
-# Last updated by GeneNetwork Core Team 2010/10/20
-
-class GeneralObject:
- """
- Base class to define an Object.
- a = [Spam(1, 4), Spam(9, 3), Spam(4,6)]
- a.sort(lambda x, y: cmp(x.eggs, y.eggs))
- """
-
- def __init__(self, *args, **kw):
- self.contents = list(args)
- for name, value in kw.items():
- setattr(self, name, value)
-
- def __setitem__(self, key, value):
- setattr(self, key, value)
-
- def __getitem__(self, key):
- return getattr(self, key)
-
- def __getattr__(self, key):
- if key in self.__dict__.keys():
- return self.__dict__[key]
- else:
- return eval("self.__dict__.%s" % key)
-
- def __len__(self):
- return len(self.__dict__) - 1
-
- def __str__(self):
- s = ''
- for key in self.__dict__.keys():
- if key != 'contents':
- s += '%s = %s\n' % (key,self.__dict__[key])
- return s
-
- def __repr__(self):
- s = ''
- for key in self.__dict__.keys():
- s += '%s = %s\n' % (key,self.__dict__[key])
- return s
-
- def __cmp__(self,other):
- return len(self.__dict__.keys()).__cmp__(len(other.__dict__.keys()))
diff --git a/wqflask/base/JinjaPage.py b/wqflask/base/JinjaPage.py
deleted file mode 100755
index 07e485b1..00000000
--- a/wqflask/base/JinjaPage.py
+++ /dev/null
@@ -1,28 +0,0 @@
-import logging
-logging.basicConfig(filename="/tmp/gn_log", level=logging.INFO)
-_log = logging.getLogger("search")
-
-from pprint import pformat as pf
-
-import templatePage
-
-from utility import formatting
-
-import jinja2
-JinjaEnv = jinja2.Environment(loader=jinja2.FileSystemLoader('/gnshare/gn/web/webqtl/templates'))
-JinjaEnv.globals['numify'] = formatting.numify
-
-
-class JinjaPage(templatePage.templatePage):
- """Class derived from our regular templatePage, but uses Jinja2 instead.
-
- When converting pages from Python generated templates, change the base class from templatePage
- to JinjaPage
-
- """
-
-
- def write(self):
- """We override the base template write so we can use Jinja2."""
- _log.info(pf(self.__dict__))
- return self.jtemplate.render(**self.__dict__)
diff --git a/wqflask/base/admin.py b/wqflask/base/admin.py
deleted file mode 100755
index 1ba75117..00000000
--- a/wqflask/base/admin.py
+++ /dev/null
@@ -1,86 +0,0 @@
-# Copyright (C) University of Tennessee Health Science Center, Memphis, TN.
-#
-# This program is free software: you can redistribute it and/or modify it
-# under the terms of the GNU Affero General Public License
-# as published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the GNU Affero General Public License for more details.
-#
-# This program is available from Source Forge: at GeneNetwork Project
-# (sourceforge.net/projects/genenetwork/).
-#
-# Contact Drs. Robert W. Williams and Xiaodong Zhou (2010)
-# at rwilliams@uthsc.edu and xzhou15@uthsc.edu
-#
-#
-#
-# This module is used by GeneNetwork project (www.genenetwork.org)
-#
-# Created by GeneNetwork Core Team 2010/08/10
-#
-# Last updated by GeneNetwork Core Team 2010/10/20
-
-
-
-
-
-#XZ, 04/02/2009: we should put this into database.
-
-
-###LIST of databases used into gene name query
-
-
-ADMIN_search_dbs = {
- 'rat': {'PERITONEAL FAT': ['FT_2A_0605_Rz'],
- 'KIDNEY': ['KI_2A_0405_Rz'],
- 'ADRENAL GLAND': ['HXB_Adrenal_1208'],
- 'HEART': ['HXB_Heart_1208']
- },
- 'mouse': {'CEREBELLUM': ['CB_M_0305_R'],
- 'STRIATUM': ['SA_M2_0905_R', 'SA_M2_0405_RC', 'UTHSC_1107_RankInv', 'Striatum_Exon_0209'],
- 'HIPPOCAMPUS': ['HC_M2_0606_R', 'UMUTAffyExon_0209_RMA'],
- 'WHOLE BRAIN': ['BR_M2_1106_R', 'IBR_M_0106_R', 'BRF2_M_0805_R', 'UCLA_BHF2_BRAIN_0605'],
- 'LIVER': ['LV_G_0106_B', 'UCLA_BHF2_LIVER_0605'],
- 'EYE': ['Eye_M2_0908_R'],
- 'HEMATOPOIETIC STEM CELLS': ['HC_U_0304_R'],
- 'KIDNEY': ['MA_M2_0806_R'],
- 'MAMMARY TUMORS': ['MA_M_0704_R', 'NCI_Agil_Mam_Tum_RMA_0409'],
- 'PREFRONTAL CORTEX': ['VCUSal_1206_R'],
- 'SPLEEN': ['IoP_SPL_RMA_0509'],
- 'NUCLEUS ACCUMBENS': ['VCUSalo_1007_R'],
- 'NEOCORTEX': ['HQFNeoc_0208_RankInv'],
- 'ADIPOSE': ['UCLA_BHF2_ADIPOSE_0605'],
- 'RETINA': ['Illum_Retina_BXD_RankInv0410']
- },
- 'human': {
- 'LYMPHOBLAST B CELL': ['Human_1008', 'UT_CEPH_RankInv0909'],
- 'WHOLE BRAIN': ['GSE5281_F_RMA0709', 'GSE15222_F_RI_0409']
- }
- }
-
-
-###LIST of tissue alias
-
-ADMIN_tissue_alias = {'CEREBELLUM': ['Cb'],
- 'STRIATUM': ['Str'],
- 'HIPPOCAMPUS': ['Hip'],
- 'WHOLE BRAIN': ['Brn'],
- 'LIVER': ['Liv'],
- 'EYE': ['Eye'],
- 'PERITONEAL FAT': ['Fat'],
- 'HEMATOPOIETIC STEM CELLS': ['Hsc'],
- 'KIDNEY': ['Kid'],
- 'ADRENAL GLAND': ['Adr'],
- 'HEART': ['Hea'],
- 'MAMMARY TUMORS': ['Mam'],
- 'PREFRONTAL CORTEX': ['Pfc'],
- 'SPLEEN': ['Spl'],
- 'NUCLEUS ACCUMBENS': ['Nac'],
- 'NEOCORTEX': ['Ctx'],
- 'ADIPOSE': ['Wfat'],
- 'RETINA': ['Ret']
- }
diff --git a/wqflask/base/cgiData.py b/wqflask/base/cgiData.py
deleted file mode 100755
index 155b3ec3..00000000
--- a/wqflask/base/cgiData.py
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright (C) University of Tennessee Health Science Center, Memphis, TN.
-#
-# This program is free software: you can redistribute it and/or modify it
-# under the terms of the GNU Affero General Public License
-# as published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the GNU Affero General Public License for more details.
-#
-# This program is available from Source Forge: at GeneNetwork Project
-# (sourceforge.net/projects/genenetwork/).
-#
-# Contact Drs. Robert W. Williams and Xiaodong Zhou (2010)
-# at rwilliams@uthsc.edu and xzhou15@uthsc.edu
-#
-#
-#
-# This module is used by GeneNetwork project (www.genenetwork.org)
-#
-# Created by GeneNetwork Core Team 2010/08/10
-#
-# Last updated by GeneNetwork Core Team 2010/10/20
-
-#########################################
-#convert Field storage object to Dict object
-#in order to be able to saved into a session file
-#########################################
-
-class cgiData(dict):
- '''convert Field storage object to Dict object
- Filed storage object cannot be properly dumped
- '''
-
- def __init__(self, field_storage=None):
-
- if not field_storage:
- field_storage={}
-
- for key in field_storage.keys():
- temp = field_storage.getlist(key)
- if len(temp) > 1:
- temp = map(self.toValue, temp)
- elif len(temp) == 1:
- temp = self.toValue(temp[0])
- else:
- temp = None
- self[key]= temp
-
- def toValue(self, obj):
- '''fieldstorge returns different type of objects, \
- need to convert to string or None'''
- try:
- return obj.value
- except:
- return ""
-
- def getvalue(self, k, default= None):
- try:
- return self[k]
- except:
- return default
-
- getfirst = getvalue
diff --git a/wqflask/base/cookieData.py b/wqflask/base/cookieData.py
deleted file mode 100755
index eeb7c0cf..00000000
--- a/wqflask/base/cookieData.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright (C) University of Tennessee Health Science Center, Memphis, TN.
-#
-# This program is free software: you can redistribute it and/or modify it
-# under the terms of the GNU Affero General Public License
-# as published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the GNU Affero General Public License for more details.
-#
-# This program is available from Source Forge: at GeneNetwork Project
-# (sourceforge.net/projects/genenetwork/).
-#
-# Contact Drs. Robert W. Williams and Xiaodong Zhou (2010)
-# at rwilliams@uthsc.edu and xzhou15@uthsc.edu
-#
-#
-#
-# This module is used by GeneNetwork project (www.genenetwork.org)
-#
-# Created by GeneNetwork Core Team 2010/08/10
-#
-# Last updated by GeneNetwork Core Team 2010/10/20
-
-#########################################
-#convert mod_python object to Dict object
-#in order to be able to be pickled
-#########################################
-
-class cookieData(dict):
- 'convert mod python Cookie object to Dict object'
-
- def __init__(self, cookies=None):
-
- if not cookies:
- cookies={}
-
- for key in cookies.keys():
- self[key.lower()]= cookies[key].value
-
- def getvalue(self, k, default= None):
- try:
- return self[k.lower()]
- except:
- return default
-
- getfirst = getvalue
diff --git a/wqflask/base/data_set.py b/wqflask/base/data_set.py
index 15a8c7cc..1cd57b4b 100755
--- a/wqflask/base/data_set.py
+++ b/wqflask/base/data_set.py
@@ -42,7 +42,7 @@ from base import species
from dbFunction import webqtlDatabaseFunction
from utility import webqtlUtil
from utility.benchmark import Bench
-from wqflask.my_pylmm.pyLMM import chunks
+from utility import chunks
from maintenance import get_group_samplelists
@@ -79,7 +79,7 @@ class Dataset_Types(object):
def __init__(self):
self.datasets = {}
- file_name = "/home/zas1024/gene/wqflask/wqflask/static/new/javascript/dataset_menu_structure.json"
+ file_name = "wqflask/static/new/javascript/dataset_menu_structure.json"
with open(file_name, 'r') as fh:
data = json.load(fh)
@@ -640,7 +640,7 @@ class PhenotypeDataSet(DataSet):
'Year',
'Max LRS',
'Max LRS Location',
- 'Add. Effect']
+ 'Add. Effect<a href="http://genenetwork.org//glossary.html#A" target="_blank"><sup style="color:#f00"> ?</sup></a>']
self.type = 'Publish'
@@ -901,7 +901,7 @@ class MrnaAssayDataSet(DataSet):
'Mean Expr',
'Max LRS',
'Max LRS Location',
- 'Add. Effect']
+ 'Add. Effect<a href="http://genenetwork.org//glossary.html#A" target="_blank"><sup style="color:#f00"> ?</sup></a>']
# Todo: Obsolete or rename this field
self.type = 'ProbeSet'
diff --git a/wqflask/base/footer.py b/wqflask/base/footer.py
deleted file mode 100755
index 6f92fdf8..00000000
--- a/wqflask/base/footer.py
+++ /dev/null
@@ -1,6 +0,0 @@
-import webqtlConfig
-
-footer_html = open(webqtlConfig.HTMLPATH + 'footer.html', 'r').read()
-footer = footer_html.replace('%"','%%"')
-
-footer_string = footer.replace('<!-- %s -->', '%s')
diff --git a/wqflask/base/generate_probesetfreeze_file.py b/wqflask/base/generate_probesetfreeze_file.py
deleted file mode 100755
index a0ff804b..00000000
--- a/wqflask/base/generate_probesetfreeze_file.py
+++ /dev/null
@@ -1,31 +0,0 @@
-from __future__ import absolute_import, print_function, division
-import os
-import math
-
-import json
-import itertools
-
-from flask import Flask, g
-
-from base import webqtlConfig
-from dbFunction import webqtlDatabaseFunction
-from utility import webqtlUtil
-
-from MySQLdb import escape_string as escape
-from pprint import pformat as pf
-
-
-query = """ select ProbeSet.Name
- from ProbeSetXRef,
- ProbeSetFreeze,
- ProbeSet
- where ProbeSetXRef.ProbeSetFreezeId = ProbeSetFreeze.Id and
- ProbeSetFreeze.Name = "EPFLMouseMuscleCDRMA1211" and
- ProbeSetXRef.ProbeSetId = ProbeSet.Id;
- """
-
-markers = g.db.execute(query).fetchall()
-print("markers: ", pf(markers))
-
-if __name__ == '__main__':
- main() \ No newline at end of file
diff --git a/wqflask/base/header.py b/wqflask/base/header.py
deleted file mode 100755
index ec15e174..00000000
--- a/wqflask/base/header.py
+++ /dev/null
@@ -1,6 +0,0 @@
-import webqtlConfig
-
-header_string = open(webqtlConfig.HTMLPATH + 'header.html', 'r').read()
-header_string = header_string.replace("\\'", "'")
-header_string = header_string.replace('%"','%%"')
-header_string = header_string.replace('<!-- %s -->', '%s')
diff --git a/wqflask/base/indexBody.py b/wqflask/base/indexBody.py
deleted file mode 100755
index a5bc4c17..00000000
--- a/wqflask/base/indexBody.py
+++ /dev/null
@@ -1,290 +0,0 @@
-index_body_string = """
-<TD vAlign=top width="40%" align="left" height=10 bgColor=#eeeeee>
- <p style="font-size:18px;font-family:verdana;color:black"><B> Select and Search</B>
- <Form METHOD="POST" ACTION="/webqtl/main.py" ENCTYPE="multipart/form-data" NAME="SEARCHFORM">
-
- <TABLE width="100%">
-
- <!-- SPECIES SELECTION -->
- <TR>
- <TD align=right height="35" style="font-size:14px;font-family:verdana;color:black" width="16%">
- <B>Species:</B>
- </TD>
-
- <TD width="3%">
- </TD>
-
- <TD NOWRAP width="85%" align="left">
- <DIV Id="menu0">
- <Select NAME="species" size=1 id="species" onchange="fillOptions('species');">
- </Select>
- </DIV>
- </TD>
- </TR>
-
- <!-- GROUP SELECTION -->
-
- <TR>
-
- <TD align="right" height="35" style="font-size:14px;font-family:verdana;color:black">
- <B>Group:</B>
- </TD>
-
- <TD width="3%">
- </TD>
-
- <TD NOWRAP width="85%" align="left">
- <DIV Id="menu1">
-
- <Select NAME="cross" size=1 id="cross" onchange="fillOptions('cross');">
- </Select>
- <input type="button" class="button" value=" Info " onCLick="javascript:crossinfo();">
- </DIV>
- </TD>
- </TR>
-
-
- <!-- TYPE SELECTION -->
-
- <TR>
-
- <TD align=right height=35 style="font-size:14px;font-family:verdana;color:black">
- <B>Type:</B>
- </TD>
-
- <TD width="3%">
- </TD>
- <TD NOWRAP width="85%" align="left">
- <DIV Id="menu2">
- <Select NAME="tissue" size=1 id="tissue" onchange="fillOptions('tissue');">
-
- </Select>
- </DIV>
- </TD>
- </TR>
-
-
- <!-- DATABASE SELECTION -->
- <TR>
- <TD align=right height=35 style="font-size:14px;font-family:verdana;color:black">
- <B>Database:</B>
- </TD>
-
- <TD width="3%">
- </TD>
-
- <TD NOWRAP width="85%" align="left">
- <DIV Id="menu3">
- <Select NAME="database" size=1 id="database">
- </Select>
- <input type="button" class="button" value=" Info " onCLick="javascript:databaseinfo();">
- </DIV>
-
- </TD>
- </TR>
-
- <!-- USER HELP -->
- <TR>
- <TD align=right height=20 width="10%">
- </TD>
- <TD width="3%">
- </TD>
-
- <TD align="left" width="85%">
- <P class="fs12">&nbsp;&nbsp;&nbsp;&nbsp;Databases marked with <B>**</B> suffix are not public yet.
- <BR>&nbsp;&nbsp;&nbsp;&nbsp;Access requires <A HREF="/account.html" target="_blank" class="fs14"><small>user login</small></A>.</P>
- </TD>
- </TR>
-
-
-<!-- GET ANY SEARCH -->
- <TR>
- <TD align=right height=35 NOWRAP="on" style="font-size:14px;font-family:verdana;color:black" width="10%">
- <B>Get Any:</B>
- </TD>
-
- <TD width="3%">
- </TD>
-
- <TD NOWRAP width="85%" align="left">
-
- <input id="tfor" name="ORkeyword" style="width:420px; background-color:white; font-family:verdana; font-size:14px" type="text" maxlength="500">
- </TD>
- </TR>
-
-
-
-<!-- GET ANY HELP -->
- <TR>
- <TD align=right height=20 width="10%">
- </TD>
- <TD width="3%">
-
- </TD>
- <TD width="85%" align="left">
- <P class="fs12">&nbsp;&nbsp;&nbsp;&nbsp;Enter terms, genes, ID numbers in the <B>Get Any</B> field.
- <BR>&nbsp;&nbsp;&nbsp;&nbsp;Use <B>*</B> or <B>?</B> wildcards (Cyp*a?, synap*).
- <BR>&nbsp;&nbsp;&nbsp;&nbsp;Use <B>Combined</B> for terms such as <I>tyrosine kinase</I>.</P>
-
- </TD>
- </TR>
-
-
-
-<!-- COMBINED SEARCH -->
-
- <TR>
- <TD align=right height=35 NOWRAP="on" STYLE="font-size:14px;font-family:verdana;color:black" width="10%">
- <B>Combined:</B>
- </TD>
-
- <TD width="3%">
- </TD>
-
- <TD NOWRAP width="85%" align="left">
- <input id="tfand" NAME="ANDkeyword" STYLE="width:420px; background-color:white; font-family:verdana; font-size:14px" type="text" maxlength="500">
- <input name="matchwhole" type="hidden" value="ON">
- </TD>
- </TR>
-
-
-
-<!-- SEARCH, MAKE DEFAULT, ADVANCED SEARCH -->
-
- <TR ALIGN="center">
- <TD width="3%">
- </TD>
- <TD width="3%">
- </TD>
- <TD ALIGN="left" HEIGHT="40" COLSPAN=3>
- <INPUT id="btsearch" TYPE="Submit" CLASS="button" STYLE="font-size:12px" VALUE=" Search ">&nbsp;&nbsp;&nbsp;&nbsp;
- <INPUT TYPE="button" CLASS="button" STYLE="font-size:12px" VALUE=" Make Default " onClick = "setDefault(this.form);">&nbsp;&nbsp;&nbsp;&nbsp;
- <INPUT TYPE="button" CLASS="button" STYLE="font-size:12px" VALUE=" Advanced Search " onClick="javascript:window.open('/index3.html', '_self');">
-
- </TD>
- </TR>
- </TABLE>
- <INPUT TYPE="hidden" NAME="FormID" VALUE="searchResult">
- <INPUT TYPE="hidden" NAME="RISet" VALUE="BXD">
- <SCRIPT SRC="/javascript/selectDatasetMenu.js"></SCRIPT>
- </FORM>
- </CENTER>
-
-
-
-
-
-<!-- QUICK HELP -->
-
-<P><LEFT>&nbsp;______________________________________________________
-
-<P STYLE="font-size:13px;font-family:verdana;color:black"><B>&nbsp;
-
-Quick HELP Examples and </B>
-<A HREF="http://www.genenetwork.org/index4.html" target="_blank" class="fs14"><B>
- User's Guide</B></A></P>
-
-</CENTER style="font-size:12px;font-family:verdana;color:black">
-&nbsp;&nbsp;You can also use advanced commands. Copy these simple examples
-<BR>&nbsp;&nbsp;into the <B>Get Any</B> or <B>Combined</B> search fields:
-<UL style="font-size:12px;font-family:verdana;color:black">
-
-<LI><B><I>POSITION=(chr1 25 30)</I></B> finds genes, markers, or transcripts on chromosome 1 between 25 and 30 Mb.
-
-<LI><B><I>MEAN=(15 16) LRS=(23 46)</I></B> in the <B>Combined</B> field finds highly expressed genes (15 to 16 log2 units) AND with peak <A HREF="http://www.genenetwork.org/glossary.html#L" target="_blank" class="fs14"><small>LRS</small></A> linkage between 23 and 46.
-
-
-<LI><B><I>RIF=mitochondrial</I></B> searches RNA databases for <A HREF="http://www.ncbi.nlm.nih.gov/projects/GeneRIF/GeneRIFhelp.html" target="_blank" class="fs14"><small>GeneRIF</small></A> links.
-
-<LI><B><I>WIKI=nicotine</I></B> searches <A HREF="http://www.genenetwork.org/webqtl/main.py?FormID=geneWiki" target="_blank" class="fs14"><small>GeneWiki</small></A> for genes that you or other users have annotated with the word <I>nicotine</I>.
-
-<LI><B><I>GO:0045202</I></B> searches for synapse-associated genes listed in the <A HREF="http://www.godatabase.org/cgi-bin/amigo/go.cgi" target="_blank" class="fs14"><small>Gene Ontology</small></A>.
-
-
-<LI><B><I>GO:0045202 LRS=(9 99 Chr4 122 155) cisLRS=(9 999 10)</I> </B><BR> in <B>Combined</B> finds synapse-associated genes with <A HREF="http://www.genenetwork.org/glossary.html#E" target="_blank" class="fs14"><small>cis eQTL</small></A> on Chr 4 from 122 and 155 Mb with LRS scores between 9 and 999.
-
-<LI><B><I>RIF=diabetes LRS=(9 999 Chr2 100 105) transLRS=(9 999 10)</I> </B><BR> in <B>Combined</B> finds diabetes-associated transcripts with peak <A HREF="http://www.genenetwork.org/glossary.html#E" target="_blank" class="fs14"><small>trans eQTLs</small></A> on Chr 2 between 100 and 105 Mb with LRS scores between 9 and 999.
-
-
-</UL>
-</DIR>
- </TD>
-<!-- END OF FIND SELECTOR PULL-DOWN PANEL (LEFT SIDE) -->
-
-<!-- START OF TOP RIGHT PANEL -->
-
-<TD vAlign=top width="40%" bgColor=#FFFFFF>
- <p style="font-size:15px;font-family:verdana;color:black"><B>Websites Affiliated with GeneNetwork</B></p>
- <p style="font-size:12px;font-family:verdana;color:black">
- <ul>
- <li><a href="http://ucscbrowser.genenetwork.org/" target="_blank">Genome Browser</a> at UTHSC</li>
- <li><a href="http://galaxy.genenetwork.org/" target="_blank">Galaxy</a> at UTHSC</li>
- <li>GeneNetwork at <a href="http://ec2.genenetwork.org/" target="_blank">Amazon Cloud (EC2)</a></li>
- <li>GeneNetwork Source Codes at <a href="http://sourceforge.net/projects/genenetwork/" target="_blank">SourceForge</a></li>
- </ul>
- </p>
- <P>____________________________
-
- <p style="font-size:15px;font-family:verdana;color:black"><B>Getting Started</B> &nbsp;&nbsp; </p>
- <OL style="font-size:12px;font-family:verdana;color:black">
- <LI>Select <B>Species</B> (or select All)
- <LI>Select <B>Group</B> (a specific sample)
- <LI>Select <B>Type</B> of data:
- <UL>
- <LI>Phenotype (traits)
- <LI>Genotype (markers)
- <LI>Expression (mRNAs)
- </UL>
- <LI>Select a <B>Database</B>
- <LI>Enter search terms in the <B>Get Any</B> or <B>Combined</B> field: words, genes, ID numbers, probes, advanced search commands
- <LI>Click on the <B>Search</B> button
- <LI>Optional: Use the <B>Make Default</B> button to save your preferences
- </OL>
-
- <P>____________________________
-
-<p style="font-size:14px;font-family:verdana;color:black"><B>How to Use GeneNetwork</B>
-
- <BLOCKQUOTE>
- <p style="font-size:12px;font-family:verdana;color:black">Take a 20-40 minute GeneNetwork <A HREF="http://www.genenetwork.org/tutorial/WebQTLTour/" target="_blank" class="fs14"><small>Tour</small></A> that includes screen shots and typical steps in the analysis.</P>
- </BLOCKQUOTE>
- <BLOCKQUOTE>
- <p style="font-size:12px;font-family:verdana;color:black">For information about resources and methods, select the <img src="http://www.genenetwork.org/images/upload/Info.png" alt="INFO" border= 0 valign="middle"> buttons.</P>
-
-
-
-<p style="font-size:12px;font-family:verdana;color:black">Try the <A HREF="http://alexandria.uthsc.edu/" target="_blank" class="fs14"><small>Workstation</small></A> site to explore data and features that are being implemented.</P>
-
-
-<p style="font-size:12px;font-family:verdana;color:black">Review the <A HREF="/conditionsofUse.html" target="_blank" class="fs14"><small>Conditions</small></A> and <A HREF="/statusandContact.html" target="_blank" class="fs14"><small>Contacts</small></A> pages for information on the status of data sets and advice on their use and citation.</P>
-
-
- </BLOCKQUOTE>
-
-
-
- <p style="font-size:14px;font-family:verdana;color:black"><B>Mirror and Development Sites</B></P>
-
- <UL>
- <LI><A HREF="http://www.genenetwork.org/" target="_blank" style="font-size:12px;font-family:verdana;color:blue">Main GN site at UTHSC</A> (main site)
- <LI><A HREF="http://www.genenetwork.waimr.uwa.edu.au/" target="_blank" style="font-size:12px;font-family:verdana;color:blue">Australia at the UWA</A>
- <LI><A HREF="http://gn.genetics.ucla.edu/" target="_blank" style="font-size:12px;font-family:verdana;color:blue">California at UCLA</A>
- <LI><A HREF="http://genenetwork.helmholtz-hzi.de/" target="_blank" style="font-size:12px;font-family:verdana;color:blue">Germany at the HZI</A>
- <LI><A HREF="https://genenetwork.hubrecht.eu/" target="_blank" style="font-size:12px;font-family:verdana;color:blue">Netherlands at the Hubrecht</A> (Development)
- <LI><A HREF="http://xzhou3.memphis.edu/" target="_blank" style="font-size:12px;font-family:verdana;color:blue">Memphis at the U of M</A>
- <LI><A HREF="http://webqtl.bic.nus.edu.sg/" target="_blank" style="font-size:12px;font-family:verdana;color:blue">Singapore at the NUS</A>
- <LI><A HREF="http://genenetwork.epfl.ch/" target="_blank" style="font-size:12px;font-family:verdana;color:blue">Switzerland at the EPFL</A>
- </UL>
-
-
- <p style="font-size:14px;font-family:verdana;color:black"><B>History and Archive</B>
-
- <BLOCKQUOTE>
- <p style="font-size:12px;font-family:verdana;color:black">GeneNetwork's <A HREF="http://artemis.uthsc.edu" target="_blank" class="fs14"><small>Time Machine</small></A> links to earlier versions that correspond to specific publication dates.</P>
-
- </BLOCKQUOTE>
-
-
-</P>
- </TD>
-"""
diff --git a/wqflask/base/myCookie.py b/wqflask/base/myCookie.py
deleted file mode 100755
index add7e6ea..00000000
--- a/wqflask/base/myCookie.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright (C) University of Tennessee Health Science Center, Memphis, TN.
-#
-# This program is free software: you can redistribute it and/or modify it
-# under the terms of the GNU Affero General Public License
-# as published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the GNU Affero General Public License for more details.
-#
-# This program is available from Source Forge: at GeneNetwork Project
-# (sourceforge.net/projects/genenetwork/).
-#
-# Contact Drs. Robert W. Williams and Xiaodong Zhou (2010)
-# at rwilliams@uthsc.edu and xzhou15@uthsc.edu
-#
-#
-#
-# This module is used by GeneNetwork project (www.genenetwork.org)
-#
-# Created by GeneNetwork Core Team 2010/08/10
-#
-# Last updated by GeneNetwork Core Team 2010/10/20
-
-#########################################
-## python cookie and mod python cookie are
-## not compatible
-#########################################
-
-class myCookie(dict):
- 'define my own cookie'
-
- def __init__(self, name="", value="", expire = None, path="/"):
- self['name']= name
- self['value']= value
- self['expire']= expire
- self['path']= path
-
- def __getattr__(self, key):
- if key in self.keys():
- return self[key]
- else:
- return None
-
- def __nonzero__ (self):
- if self['name']:
- return 1
- else:
- return 0
diff --git a/wqflask/base/sessionData.py b/wqflask/base/sessionData.py
deleted file mode 100755
index 4b23060f..00000000
--- a/wqflask/base/sessionData.py
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright (C) University of Tennessee Health Science Center, Memphis, TN.
-#
-# This program is free software: you can redistribute it and/or modify it
-# under the terms of the GNU Affero General Public License
-# as published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the GNU Affero General Public License for more details.
-#
-# This program is available from Source Forge: at GeneNetwork Project
-# (sourceforge.net/projects/genenetwork/).
-#
-# Contact Drs. Robert W. Williams and Xiaodong Zhou (2010)
-# at rwilliams@uthsc.edu and xzhou15@uthsc.edu
-#
-#
-#
-# This module is used by GeneNetwork project (www.genenetwork.org)
-#
-# Created by GeneNetwork Core Team 2010/08/10
-#
-# Last updated by GeneNetwork Core Team 2010/10/20
-
-#########################################
-#convert mod_python object to Dict object
-#in order to be able to be pickled
-#########################################
-
-class sessionData(dict):
- 'convert mod python Session object to Dict object'
-
- def __init__(self, mod_python_session=None):
-
- if not mod_python_session:
- mod_python_session = {}
-
- for key in mod_python_session.keys():
- self[key]= mod_python_session[key]
-
-
- def getvalue(self, k, default= None):
- try:
- return self[k]
- except:
- return default
-
- getfirst = getvalue
diff --git a/wqflask/base/templatePage.py b/wqflask/base/templatePage.py
deleted file mode 100755
index a94d5153..00000000
--- a/wqflask/base/templatePage.py
+++ /dev/null
@@ -1,222 +0,0 @@
-# Copyright (C) University of Tennessee Health Science Center, Memphis, TN.
-#
-# This program is free software: you can redistribute it and/or modify it
-# under the terms of the GNU Affero General Public License
-# as published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the GNU Affero General Public License for more details.
-#
-# This program is available from Source Forge: at GeneNetwork Project
-# (sourceforge.net/projects/genenetwork/).
-#
-# Contact Drs. Robert W. Williams and Xiaodong Zhou (2010)
-# at rwilliams@uthsc.edu and xzhou15@uthsc.edu
-#
-#
-#
-# This module is used by GeneNetwork project (www.genenetwork.org)
-#
-# Created by GeneNetwork Core Team 2010/08/10
-#
-# Last updated by GeneNetwork Core Team 2010/10/20
-
-#templatePage.py
-#
-#--Genenetwork generates a lot of pages; this file is the generic version of them, defining routines they all use.
-#
-#Classes:
-#templatePage
-#
-#Functions (of templatePage):
-#__init__(...) -- class constructor, allows a more specific template to be used in addition to templatePage
-#__str__(self) -- returns the object's elements as a tuple
-#__del__(self) -- closes the current connection to MySQL, if there is one
-#write -- explained below
-#writefile -- explained below
-#openMysql(self) -- opens a MySQL connection and stores the resulting cursor in the object's cursor variable
-#updMysql(self) -- same as openMysql
-#error -- explained below
-#session -- explained below
-
-
-import socket
-import time
-import shutil
-import MySQLdb
-import os
-
-from htmlgen import HTMLgen2 as HT
-
-import template
-import webqtlConfig
-import header
-import footer
-from utility import webqtlUtil
-
-
-
-class templatePage:
-
- contents = ['title','basehref','js1','js2', 'layer', 'header', 'body', 'footer']
-
- # you can pass in another template here if you want
- def __init__(self, fd=None, template=template.template):
-
- # initiate dictionary
- self.starttime = time.time()
- self.dict = {}
- self.template = template
-
- for item in self.contents:
- self.dict[item] = ""
-
- self.dict['basehref'] = "" #webqtlConfig.BASEHREF
- self.cursor = None
-
- self.cookie = [] #XZ: list to hold cookies (myCookie object) being changed
- self.content_type = 'text/html'
- self.content_disposition = ''
- self.redirection = ''
- self.debug = ''
- self.attachment = ''
-
- #XZ: Holding data (new data or existing data being changed) that should be saved to session. The data must be picklable!!!
- self.session_data_changed = {}
-
- self.userName = 'Guest'
- self.privilege = 'guest'
-
- # Commenting this out for flask - we'll have to reimplement later - Sam
- #if fd.input_session_data.has_key('user'):
- # self.userName = fd.input_session_data['user']
- #if fd.input_session_data.has_key('privilege'):
- # self.privilege = fd.input_session_data['privilege']
-
- def __str__(self):
-
- #XZ: default setting
- thisUserName = self.userName
- thisPrivilege = self.privilege
- #XZ: user may just go through login or logoff page
- if self.session_data_changed.has_key('user'):
- thisUserName = self.session_data_changed['user']
- if self.session_data_changed.has_key('privilege'):
- thisPrivilege = self.session_data_changed['privilege']
-
- if thisUserName == 'Guest':
- userInfo = 'Welcome! <a href=/account.html><U>Login</U></a>'
- else:
- userInfo = 'Hi, %s! <a href=/webqtl/main.py?FormID=userLogoff><U>Logout</U></a>' % thisUserName
-
- reload(header)
- self.dict['header'] = header.header_string % userInfo
-
- serverInfo = "It took %2.3f second(s) for %s to generate this page" % (time.time()-self.starttime, socket.getfqdn())
- reload(footer)
- self.dict['footer'] = footer.footer_string % serverInfo
-
- slist = []
- for item in self.contents:
- slist.append(self.dict[item])
- return self.template % tuple(slist)
-
-
- def __del__(self):
- if self.cursor:
- self.cursor.close()
-
- def write(self):
- 'return string representation of this object'
-
- if self.cursor:
- self.cursor.close()
-
- return str(self)
-
- def writeFile(self, filename):
- 'save string representation of this object into a file'
- if self.cursor:
- self.cursor.close()
-
- try:
- 'it could take a long time to generate the file, save to .tmp first'
- fp = open(os.path.join(webqtlConfig.TMPDIR, filename+'.tmp'), 'wb')
- fp.write(str(self))
- fp.close()
- path_tmp = os.path.join(webqtlConfig.TMPDIR, filename+'.tmp')
- path_html = os.path.join(webqtlConfig.TMPDIR, filename)
- shutil.move(path_tmp,path_html)
- except:
- pass
-
- def openMysql(self):
- try:
- self.db_conn = MySQLdb.Connect(db=webqtlConfig.DB_NAME,host=webqtlConfig.MYSQL_SERVER, \
- user=webqtlConfig.DB_USER,passwd=webqtlConfig.DB_PASSWD)
- self.cursor = self.db_conn.cursor()
- return True
- except Exception:
- heading = "Connect MySQL Server"
- detail = ["Can't connect to MySQL server on '"+ webqtlConfig.MYSQL_SERVER+"':100061. \
- The server may be down at this time"]
- self.error(heading=heading,detail=detail,error="Error 2003")
- return False
-
- def updMysql(self):
- try:
- self.db_conn = MySQLdb.Connect(db=webqtlConfig.DB_UPDNAME,host=webqtlConfig.MYSQL_UPDSERVER, \
- user=webqtlConfig.DB_UPDUSER,passwd=webqtlConfig.DB_UPDPASSWD)
- self.cursor = self.db_conn.cursor()
- return True
- except Exception:
- heading = "Connect MySQL Server"
- detail = ["update: Can't connect to MySQL server on '"+ webqtlConfig.MYSQL_UPDSERVER+"':100061. \
- The server may be down at this time "]
- self.error(heading=heading,detail=detail,error="Error 2003")
- return False
-
- def error(self,heading="",intro=[],detail=[],title="Error",error="Error"):
- 'generating a WebQTL style error page'
- Heading = HT.Paragraph(heading)
- Heading.__setattr__("class","title")
-
- Intro = HT.Blockquote()
- if intro:
- for item in intro:
- Intro.append(item)
- else:
- Intro.append(HT.Strong('Sorry!'),' Error occurred while processing\
- your request.', HT.P(),'The nature of the error generated is as\
- follows:')
-
- Detail = HT.Blockquote()
- Detail.append(HT.Span("%s : " % error,Class="fwb cr"))
- if detail:
- Detail2 = HT.Blockquote()
- for item in detail:
- Detail2.append(item)
- Detail.append(HT.Italic(Detail2))
-
- #Detail.__setattr__("class","subtitle")
- TD_LR = HT.TD(height=200,width="100%",bgColor='#eeeeee',valign="top")
- TD_LR.append(Heading,Intro,Detail)
- self.dict['body'] = str(TD_LR)
- self.dict['title'] = title
-
- def session(self,mytitle="",myHeading=""):
- 'generate a auto-refreshing temporary html file(waiting page)'
- self.filename = webqtlUtil.generate_session()
- self.dict['title'] = mytitle
- self.dict['basehref'] = webqtlConfig.REFRESHSTR % (webqtlConfig.CGIDIR, self.filename) + "" #webqtlConfig.BASEHREF
-
- TD_LR = HT.TD(align="center", valign="middle", height=200,width="100%", bgColor='#eeeeee')
- Heading = HT.Paragraph(myHeading, Class="fwb fs16 cr")
- # NL, 07/27/2010. variable 'PROGRESSBAR' has been moved from templatePage.py to webqtlUtil.py;
- TD_LR.append(Heading, HT.BR(), webqtlUtil.PROGRESSBAR)
- self.dict['body'] = TD_LR
- self.writeFile(self.filename + '.html')
- return self.filename
diff --git a/wqflask/base/trait.py b/wqflask/base/trait.py
index 58bed865..8930c917 100755
--- a/wqflask/base/trait.py
+++ b/wqflask/base/trait.py
@@ -53,7 +53,8 @@ class GeneralTrait(object):
self.pvalue = None
self.mean = None
self.num_overlap = None
-
+ self.strand_probe = None
+ self.symbol = None
if kw.get('fullname'):
name2 = value.split("::")
@@ -533,12 +534,27 @@ class GeneralTrait(object):
return setDescription
@property
+ def name_header_fmt(self):
+ '''Return a human-readable name for use in page header'''
+ if self.dataset.type == 'ProbeSet':
+ return self.symbol
+ elif self.dataset.type == 'Geno':
+ return self.name
+ elif self.dataset.type == 'Publish':
+ return self.post_publication_abbreviation
+ else:
+ return "unnamed"
+
+ @property
def description_fmt(self):
'''Return a text formated description'''
- if self.description:
- formatted = self.description
- if self.probe_target_description:
- formatted += "; " + self.probe_target_description
+ if self.dataset.type == 'ProbeSet':
+ if self.description:
+ formatted = self.description
+ if self.probe_target_description:
+ formatted += "; " + self.probe_target_description
+ elif self.dataset.type == 'Publish':
+ formatted = self.post_publication_description
else:
formatted = "Not available"
return formatted.capitalize()
@@ -549,6 +565,9 @@ class GeneralTrait(object):
if self.alias:
alias = string.replace(self.alias, ";", " ")
alias = string.join(string.split(alias), ", ")
+ else:
+ alias = 'Not available'
+
return alias
@@ -649,4 +668,4 @@ def get_sample_data():
# jsonable_sample_data[sample] = trait_ob.data[sample].value
#
#return jsonable_sample_data
- \ No newline at end of file
+
diff --git a/wqflask/base/webqtlConfig.py b/wqflask/base/webqtlConfig.py
index 23d32233..48d8cd0a 100755
--- a/wqflask/base/webqtlConfig.py
+++ b/wqflask/base/webqtlConfig.py
@@ -52,13 +52,13 @@ ENSEMBLETRANSCRIPT_URL="http://useast.ensembl.org/Mus_musculus/Lucene/Details?sp
GNROOT = "/home/zas1024/gene/" # Will remove this and dependent items later
SECUREDIR = GNROOT + 'secure/'
COMMON_LIB = GNROOT + 'support/admin'
-HTMLPATH = GNROOT + 'web/'
+HTMLPATH = GNROOT + 'genotype_files/'
PYLMM_PATH = '/home/zas1024/plink/'
SNP_PATH = '/home/zas1024/snps/'
-IMGDIR = HTMLPATH +'image/'
+IMGDIR = GNROOT + '/wqflask/wqflask/images/'
IMAGESPATH = HTMLPATH + 'images/'
UPLOADPATH = IMAGESPATH + 'upload/'
-TMPDIR = '/tmp/'
+TMPDIR = '/home/zas1024/tmp/' # Will remove this and dependent items later
GENODIR = HTMLPATH + 'genotypes/'
NEWGENODIR = HTMLPATH + 'new_genotypes/'
GENO_ARCHIVE_DIR = GENODIR + 'archive/'
diff --git a/wqflask/base/webqtlFormData.py b/wqflask/base/webqtlFormData.py
index a3537c87..44fdcc3f 100755
--- a/wqflask/base/webqtlFormData.py
+++ b/wqflask/base/webqtlFormData.py
@@ -35,15 +35,9 @@ import os
import reaper
import webqtlConfig
-import cookieData
-import sessionData
-from cgiData import cgiData
from webqtlCaseData import webqtlCaseData
from utility import webqtlUtil
-
-
-
class webqtlFormData(object):
'Represents data from a WebQTL form page, needed to generate the next page'