aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/genenetwork22
-rwxr-xr-xwqflask/base/data_set.py194
-rwxr-xr-xwqflask/base/webqtlFormData.py2
-rwxr-xr-xwqflask/basicStatistics/BasicStatisticsFunctions.py6
-rwxr-xr-xwqflask/maintenance/get_group_samplelists.py3
-rw-r--r--wqflask/utility/tools.py11
-rwxr-xr-xwqflask/wqflask/correlation/show_corr_results.py2
-rwxr-xr-xwqflask/wqflask/correlation_matrix/show_corr_matrix.py1
-rw-r--r--wqflask/wqflask/heatmap/heatmap.py2
-rwxr-xr-xwqflask/wqflask/interval_analyst/IntervalAnalystPage.py138
-rwxr-xr-xwqflask/wqflask/marker_regression/MarkerRegressionPage.py6
-rw-r--r--wqflask/wqflask/marker_regression/marker_regression.py2
-rw-r--r--wqflask/wqflask/marker_regression/marker_regression_gn1.py116
-rwxr-xr-xwqflask/wqflask/search_results.py1
-rwxr-xr-xwqflask/wqflask/show_trait/show_trait.py2
15 files changed, 246 insertions, 242 deletions
diff --git a/bin/genenetwork2 b/bin/genenetwork2
index 54eee02e..00ee09bf 100755
--- a/bin/genenetwork2
+++ b/bin/genenetwork2
@@ -1,6 +1,6 @@
#! /bin/bash
#
-# This will run the server with default settings
+# This will run the server with default settings.
# Absolute path to this script, e.g. /home/user/bin/foo.sh
SCRIPT=$(readlink -f "$0")
diff --git a/wqflask/base/data_set.py b/wqflask/base/data_set.py
index ce13dd77..6527657a 100755
--- a/wqflask/base/data_set.py
+++ b/wqflask/base/data_set.py
@@ -76,22 +76,22 @@ def create_dataset(dataset_name, dataset_type = None, get_samplelist = True):
#def get_dataset_type_from_json(dataset_name):
-
+
class Dataset_Types(object):
-
+
def __init__(self):
self.datasets = {}
file_name = "wqflask/static/new/javascript/dataset_menu_structure.json"
with open(file_name, 'r') as fh:
data = json.load(fh)
-
+
print("*" * 70)
for species in data['datasets']:
for group in data['datasets'][species]:
for dataset_type in data['datasets'][species][group]:
for dataset in data['datasets'][species][group][dataset_type]:
#print("dataset is:", dataset)
-
+
short_dataset_name = dataset[1]
if dataset_type == "Phenotypes":
new_type = "Publish"
@@ -100,32 +100,32 @@ class Dataset_Types(object):
else:
new_type = "ProbeSet"
self.datasets[short_dataset_name] = new_type
-
+
def __call__(self, name):
return self.datasets[name]
-
+
# Do the intensive work at startup one time only
Dataset_Getter = Dataset_Types()
#
#print("Running at startup:", get_dataset_type_from_json("HBTRC-MLPFC_0611"))
-
+
def create_datasets_list():
key = "all_datasets"
result = Redis.get(key)
-
+
if result:
print("Cache hit!!!")
datasets = pickle.loads(result)
-
+
else:
datasets = list()
with Bench("Creating DataSets object"):
type_dict = {'Publish': 'PublishFreeze',
'ProbeSet': 'ProbeSetFreeze',
'Geno': 'GenoFreeze'}
-
+
for dataset_type in type_dict:
query = "SELECT Name FROM {}".format(type_dict[dataset_type])
for result in g.db.execute(query).fetchall():
@@ -134,10 +134,10 @@ def create_datasets_list():
#print("type: {}\tname: {}".format(dataset_type, result.Name))
dataset = create_dataset(result.Name, dataset_type)
datasets.append(dataset)
-
+
Redis.set(key, pickle.dumps(datasets, pickle.HIGHEST_PROTOCOL))
Redis.expire(key, 60*60)
-
+
return datasets
@@ -158,30 +158,30 @@ def mescape(*items):
class Markers(object):
"""Todo: Build in cacheing so it saves us reading the same file more than once"""
def __init__(self, name):
- json_data_fh = open(os.path.join(webqtlConfig.NEWGENODIR + name + '.json'))
+ json_data_fh = open(locate(name + '.json','genotype/json'))
try:
markers = json.load(json_data_fh)
except:
markers = []
-
+
for marker in markers:
if (marker['chr'] != "X") and (marker['chr'] != "Y"):
marker['chr'] = int(marker['chr'])
marker['Mb'] = float(marker['Mb'])
-
+
self.markers = markers
#print("self.markers:", self.markers)
-
-
+
+
def add_pvalues(self, p_values):
print("length of self.markers:", len(self.markers))
print("length of p_values:", len(p_values))
-
+
if type(p_values) is list:
# THIS IS only needed for the case when we are limiting the number of p-values calculated
#if len(self.markers) > len(p_values):
# self.markers = self.markers[:len(p_values)]
-
+
for marker, p_value in itertools.izip(self.markers, p_values):
if not p_value:
continue
@@ -214,7 +214,7 @@ class Markers(object):
#self.markers.remove(marker)
#del self.markers[i]
self.markers = filtered_markers
-
+
#for i, marker in enumerate(self.markers):
# if not 'p_value' in marker:
@@ -223,9 +223,9 @@ class Markers(object):
# #self.markers.remove(self.markers[i])
class HumanMarkers(Markers):
-
+
def __init__(self, name, specified_markers = []):
- marker_data_fh = open(os.path.join(webqtlConfig.PYLMM_PATH + name + '.bim'))
+ marker_data_fh = open(locate('genotype') + '/' + name + '.bim')
self.markers = []
for line in marker_data_fh:
splat = line.strip().split()
@@ -244,7 +244,7 @@ class HumanMarkers(Markers):
marker['name'] = splat[1]
marker['Mb'] = float(splat[3]) / 1000000
self.markers.append(marker)
-
+
#print("markers is: ", pf(self.markers))
@@ -257,26 +257,26 @@ class HumanMarkers(Markers):
# 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
-
+
#print("p_values2:", pf(p_values))
super(HumanMarkers, self).add_pvalues(p_values)
-
+
#with Bench("deleting markers"):
# markers = []
# for marker in self.markers:
# if not marker['Mb'] <= 0 and not marker['chr'] == 0:
# markers.append(marker)
# self.markers = markers
-
-
+
+
class DatasetGroup(object):
"""
Each group has multiple datasets; each species has multiple groups.
-
+
For example, Mouse has multiple groups (BXD, BXA, etc), and each group
has multiple datasets associated with it.
-
+
"""
def __init__(self, dataset):
"""This sets self.group and self.group_id"""
@@ -284,14 +284,14 @@ class DatasetGroup(object):
self.name, self.id = g.db.execute(dataset.query_for_group).fetchone()
if self.name == 'BXD300':
self.name = "BXD"
-
+
self.f1list = None
self.parlist = None
self.get_f1_parent_strains()
#print("parents/f1s: {}:{}".format(self.parlist, self.f1list))
-
+
self.species = webqtlDatabaseFunction.retrieve_species(self.name)
-
+
self.incparentsf1 = False
self.allsamples = None
self._datasets = None
@@ -302,7 +302,7 @@ class DatasetGroup(object):
def get_markers(self):
#print("self.species is:", self.species)
if self.species == "human":
- marker_class = HumanMarkers
+ marker_class = HumanMarkers
else:
marker_class = Markers
@@ -356,7 +356,7 @@ class DatasetGroup(object):
dataset_menu.append(dict(tissue=None, datasets=[(dataset, dataset_short)]))
else:
dataset_sub_menu = [item[1:] for item in dataset]
-
+
tissue_already_exists = False
tissue_position = None
for i, tissue_dict in enumerate(dataset_menu):
@@ -384,7 +384,7 @@ class DatasetGroup(object):
f1, f12, maternal, paternal = webqtlUtil.ParInfo[self.name]
except KeyError:
f1 = f12 = maternal = paternal = None
-
+
if f1 and f12:
self.f1list = [f1, f12]
if maternal and paternal:
@@ -455,18 +455,18 @@ class DatasetGroup(object):
#self.samplelist = list(self.genotype.prgy)
self.samplelist = list(genotype.prgy)
-
+
return genotype
#class DataSets(object):
# """Builds a list of DataSets"""
-#
+#
# def __init__(self):
# self.datasets = list()
-#
+#
+
-
#query = """SELECT Name FROM ProbeSetFreeze
# UNION
# SELECT Name From PublishFreeze
@@ -501,7 +501,7 @@ class DataSet(object):
self.check_confidentiality()
self.retrieve_other_names()
-
+
self.group = DatasetGroup(self) # sets self.group and self.group_id and gets genotype
if get_samplelist == True:
self.group.get_samplelist()
@@ -511,30 +511,30 @@ class DataSet(object):
def get_desc(self):
"""Gets overridden later, at least for Temp...used by trait's get_given_name"""
return None
-
+
#@staticmethod
#def get_by_trait_id(trait_id):
# """Gets the dataset object given the trait id"""
- #
- #
#
- # name = g.db.execute(""" SELECT
- #
+ #
+ #
+ # name = g.db.execute(""" SELECT
+ #
# """)
- #
+ #
# return DataSet(name)
# Delete this eventually
@property
def riset():
Weve_Renamed_This_As_Group
-
-
+
+
#@property
#def group(self):
# if not self._group:
# self.get_group()
- #
+ #
# return self._group
@@ -546,7 +546,7 @@ class DataSet(object):
This is not meant to retrieve the data set info if no name at all is passed.
"""
-
+
try:
if self.type == "ProbeSet":
query_args = tuple(escape(x) for x in (
@@ -582,17 +582,17 @@ class DataSet(object):
except TypeError:
print("Dataset {} is not yet available in GeneNetwork.".format(self.name))
pass
-
+
def get_trait_data(self, sample_list=None):
if sample_list:
self.samplelist = sample_list
else:
self.samplelist = self.group.samplelist
-
+
if self.group.parlist != None and self.group.f1list != None:
if (self.group.parlist + self.group.f1list) in self.samplelist:
self.samplelist += self.group.parlist + self.group.f1list
-
+
query = """
SELECT Strain.Name, Strain.Id FROM Strain, Species
WHERE Strain.Name IN {}
@@ -610,9 +610,9 @@ class DataSet(object):
trait_sample_data = []
for sample_ids_step in chunks.divide_into_chunks(sample_ids, number_chunks):
- #XZ, 09/24/2008: build one temporary table that only contains the records associated with the input GeneId
+ #XZ, 09/24/2008: build one temporary table that only contains the records associated with the input GeneId
#tempTable = None
- #if GeneId and db.type == "ProbeSet":
+ #if GeneId and db.type == "ProbeSet":
# if method == "3":
# tempTable = self.getTempLiteratureTable(species=species,
# input_species_geneid=GeneId,
@@ -623,7 +623,7 @@ class DataSet(object):
# TissueProbeSetFreezeId=tissueProbeSetFreezeId,
# method=method,
# returnNumber=returnNumber)
-
+
if self.type == "Publish":
dataset_type = "Phenotype"
else:
@@ -644,7 +644,7 @@ class DataSet(object):
left join {}Data as T{} on T{}.Id = {}XRef.DataId
and T{}.StrainId={}\n
""".format(*mescape(self.type, item, item, self.type, item, item))
-
+
if self.type == "Publish":
query += """
WHERE {}XRef.InbredSetId = {}Freeze.InbredSetId
@@ -661,16 +661,16 @@ class DataSet(object):
order by {}.Id
""".format(*mescape(self.type, self.type, self.type, self.type,
self.name, dataset_type, self.type, self.type, dataset_type))
-
+
#print("trait data query: ", query)
-
+
results = g.db.execute(query).fetchall()
#print("query results:", results)
trait_sample_data.append(results)
trait_count = len(trait_sample_data[0])
self.trait_data = collections.defaultdict(list)
-
+
# put all of the separate data together into a dictionary where the keys are
# trait names and values are lists of sample values
for trait_counter in range(trait_count):
@@ -683,9 +683,9 @@ class PhenotypeDataSet(DataSet):
DS_NAME_MAP['Publish'] = 'PhenotypeDataSet'
def setup(self):
-
+
#print("IS A PHENOTYPEDATASET")
-
+
# Fields in the database table
self.search_fields = ['Phenotype.Post_publication_description',
'Phenotype.Pre_publication_description',
@@ -756,26 +756,26 @@ class PhenotypeDataSet(DataSet):
def get_trait_info(self, trait_list, species = ''):
for this_trait in trait_list:
-
+
if not this_trait.haveinfo:
this_trait.retrieve_info(get_qtl_info=True)
description = this_trait.post_publication_description
-
+
#If the dataset is confidential and the user has access to confidential
#phenotype traits, then display the pre-publication description instead
#of the post-publication description
if this_trait.confidential:
this_trait.description_display = ""
continue # for now
-
+
if not webqtlUtil.hasAccessToConfidentialPhenotypeTrait(
privilege=self.privilege,
userName=self.userName,
authorized_users=this_trait.authorized_users):
-
+
description = this_trait.pre_publication_description
-
+
if len(description) > 0:
this_trait.description_display = description.strip()
else:
@@ -820,7 +820,7 @@ class PhenotypeDataSet(DataSet):
this_trait.LRS_score_repr = LRS_score_repr = '%3.1f' % this_trait.lrs
this_trait.LRS_score_value = LRS_score_value = this_trait.lrs
this_trait.LRS_location_repr = LRS_location_repr = 'Chr%s: %.6f' % (LRS_Chr, float(LRS_Mb))
-
+
def retrieve_sample_data(self, trait):
query = """
SELECT
@@ -878,7 +878,7 @@ class GenotypeDataSet(DataSet):
def check_confidentiality(self):
return geno_mrna_confidentiality(self)
-
+
def get_trait_list(self):
query = """
select Geno.Name
@@ -912,7 +912,7 @@ class GenotypeDataSet(DataSet):
this_trait.location_repr = 'Chr%s: %.6f' % (this_trait.chr, float(this_trait.mb) )
this_trait.location_value = trait_location_value
-
+
def retrieve_sample_data(self, trait):
query = """
SELECT
@@ -1004,7 +1004,7 @@ class MrnaAssayDataSet(DataSet):
def check_confidentiality(self):
return geno_mrna_confidentiality(self)
-
+
def get_trait_list_1(self):
query = """
select ProbeSet.Name
@@ -1020,7 +1020,7 @@ class MrnaAssayDataSet(DataSet):
trait_data[trait[0]] = self.retrieve_sample_data(trait[0])
#print("After retrieve_sample_data")
return trait_data
-
+
#def get_trait_data(self):
# self.samplelist = self.group.samplelist + self.group.parlist + self.group.f1list
# query = """
@@ -1040,9 +1040,9 @@ class MrnaAssayDataSet(DataSet):
# trait_sample_data = []
# for sample_ids_step in chunks.divide_into_chunks(sample_ids, number_chunks):
#
- # #XZ, 09/24/2008: build one temporary table that only contains the records associated with the input GeneId
+ # #XZ, 09/24/2008: build one temporary table that only contains the records associated with the input GeneId
# #tempTable = None
- # #if GeneId and db.type == "ProbeSet":
+ # #if GeneId and db.type == "ProbeSet":
# # if method == "3":
# # tempTable = self.getTempLiteratureTable(species=species,
# # input_species_geneid=GeneId,
@@ -1053,7 +1053,7 @@ class MrnaAssayDataSet(DataSet):
# # TissueProbeSetFreezeId=tissueProbeSetFreezeId,
# # method=method,
# # returnNumber=returnNumber)
- #
+ #
# temp = ['T%s.value' % item for item in sample_ids_step]
# query = "SELECT {}.Name,".format(escape(self.type))
# data_start_pos = 1
@@ -1067,7 +1067,7 @@ class MrnaAssayDataSet(DataSet):
# left join {}Data as T{} on T{}.Id = {}XRef.DataId
# and T{}.StrainId={}\n
# """.format(*mescape(self.type, item, item, self.type, item, item))
- #
+ #
# query += """
# WHERE {}XRef.{}FreezeId = {}Freeze.Id
# and {}Freeze.Name = '{}'
@@ -1080,7 +1080,7 @@ class MrnaAssayDataSet(DataSet):
#
# trait_count = len(trait_sample_data[0])
# self.trait_data = collections.defaultdict(list)
- #
+ #
# # put all of the separate data together into a dictionary where the keys are
# # trait names and values are lists of sample values
# for trait_counter in range(trait_count):
@@ -1088,11 +1088,11 @@ class MrnaAssayDataSet(DataSet):
# for chunk_counter in range(int(number_chunks)):
# self.trait_data[trait_name] += (
# trait_sample_data[chunk_counter][trait_counter][data_start_pos:])
-
+
def get_trait_info(self, trait_list=None, species=''):
- # Note: setting trait_list to [] is probably not a great idea.
+ # Note: setting trait_list to [] is probably not a great idea.
if not trait_list:
trait_list = []
@@ -1155,7 +1155,7 @@ class MrnaAssayDataSet(DataSet):
#print("query is:", pf(query))
result = g.db.execute(query).fetchone()
-
+
mean = result[0] if result else 0
if mean:
@@ -1176,7 +1176,7 @@ class MrnaAssayDataSet(DataSet):
Geno.SpeciesId = Species.Id
""".format(species, this_trait.locus)
result = g.db.execute(query).fetchone()
-
+
if result:
#if result[0] and result[1]:
# lrs_chr = result[0]
@@ -1184,7 +1184,7 @@ class MrnaAssayDataSet(DataSet):
lrs_chr, lrs_mb = result
#XZ: LRS_location_value is used for sorting
lrs_location_value = self.convert_location_to_value(lrs_chr, lrs_mb)
-
+
#try:
# lrs_location_value = int(lrs_chr)*1000 + float(lrs_mb)
#except:
@@ -1197,7 +1197,7 @@ class MrnaAssayDataSet(DataSet):
this_trait.LRS_score_repr = '%3.1f' % this_trait.lrs
this_trait.LRS_score_value = this_trait.lrs
this_trait.LRS_location_repr = 'Chr%s: %.6f' % (lrs_chr, float(lrs_mb))
-
+
def convert_location_to_value(self, chromosome, mb):
try:
@@ -1208,7 +1208,7 @@ class MrnaAssayDataSet(DataSet):
else:
location_value = (ord(str(chromosome).upper()[0])*1000 +
float(mb))
-
+
return location_value
def get_sequence(self):
@@ -1225,7 +1225,7 @@ class MrnaAssayDataSet(DataSet):
""" % (escape(self.name), escape(self.dataset.name))
results = g.db.execute(query).fetchone()
return results[0]
-
+
def retrieve_sample_data(self, trait):
query = """
SELECT
@@ -1246,8 +1246,8 @@ class MrnaAssayDataSet(DataSet):
results = g.db.execute(query).fetchall()
#print("RETRIEVED RESULTS HERE:", results)
return results
-
-
+
+
def retrieve_genes(self, column_name):
query = """
select ProbeSet.Name, ProbeSet.%s
@@ -1256,7 +1256,7 @@ class MrnaAssayDataSet(DataSet):
ProbeSetXRef.ProbeSetId=ProbeSet.Id;
""" % (column_name, escape(str(self.id)))
results = g.db.execute(query).fetchall()
-
+
return dict(results)
#def retrieve_gene_symbols(self):
@@ -1285,8 +1285,8 @@ class MrnaAssayDataSet(DataSet):
# for item in results:
# symbol_dict[item[0]] = item[1]
# return symbol_dict
-
-
+
+
class TempDataSet(DataSet):
@@ -1308,8 +1308,8 @@ class TempDataSet(DataSet):
self.id = 1
self.fullname = 'Temporary Storage'
self.shortname = 'Temp'
-
-
+
+
@staticmethod
def handle_pca(desc):
if 'PCA' in desc:
@@ -1318,13 +1318,13 @@ class TempDataSet(DataSet):
else:
desc = desc[:desc.index('entered')].strip()
return desc
-
+
def get_desc(self):
g.db.execute('SELECT description FROM Temp WHERE Name=%s', self.name)
desc = g.db.fetchone()[0]
desc = self.handle_pca(desc)
- return desc
-
+ return desc
+
def get_group(self):
self.cursor.execute("""
SELECT
@@ -1337,7 +1337,7 @@ class TempDataSet(DataSet):
""", self.name)
self.group, self.group_id = self.cursor.fetchone()
#return self.group
-
+
def retrieve_sample_data(self, trait):
query = """
SELECT
@@ -1351,7 +1351,7 @@ class TempDataSet(DataSet):
Order BY
Strain.Name
""" % escape(trait.name)
-
+
results = g.db.execute(query).fetchall()
diff --git a/wqflask/base/webqtlFormData.py b/wqflask/base/webqtlFormData.py
index 44fdcc3f..10251756 100755
--- a/wqflask/base/webqtlFormData.py
+++ b/wqflask/base/webqtlFormData.py
@@ -157,7 +157,7 @@ class webqtlFormData(object):
self.genotype_1 = reaper.Dataset()
- full_filename = os.path.join(webqtlConfig.GENODIR, self.group + '.geno')
+ full_filename = locate(self.group + '.geno','genotype')
# reaper barfs on unicode filenames, so here we ensure it's a string
full_filename = str(full_filename)
diff --git a/wqflask/basicStatistics/BasicStatisticsFunctions.py b/wqflask/basicStatistics/BasicStatisticsFunctions.py
index 74784853..e748a822 100755
--- a/wqflask/basicStatistics/BasicStatisticsFunctions.py
+++ b/wqflask/basicStatistics/BasicStatisticsFunctions.py
@@ -118,7 +118,7 @@ def plotNormalProbability(vals=None, RISet='', title=None, showstrains=0, specia
Plot.plotXY(c, dataZ, dataX, dataLabel = dataLabel, XLabel='Expected Z score', connectdot=0, YLabel='Trait value', title=title, specialCases=specialStrains, showLabel = showLabel)
filename= webqtlUtil.genRandStr("nP_")
- c.save(webqtlConfig.IMGDIR+filename, format='gif')
+ c.save(webqtlConfig.GENERATED_IMAGE_DIR+filename, format='gif')
img=HT.Image('/image/'+filename+'.gif',border=0)
@@ -145,7 +145,7 @@ def plotBoxPlot(vals):
Plot.plotBoxPlot(canvas, XXX, offset=(xLeftOffset, xRightOffset, yTopOffset, yBottomOffset), XLabel= "Trait")
filename= webqtlUtil.genRandStr("Box_")
- canvas.save(webqtlConfig.IMGDIR+filename, format='gif')
+ canvas.save(webqtlConfig.GENERATED_IMAGE_DIR+filename, format='gif')
img=HT.Image('/image/'+filename+'.gif',border=0)
plotLink = HT.Span("More about ", HT.Href(text="Box Plots", url="http://davidmlane.com/hyperstat/A37797.html", target="_blank", Class="fs13"))
@@ -201,7 +201,7 @@ def plotBarGraph(identification='', RISet='', vals=None, type="name"):
Plot.plotBarText(c, tvals, tnames, variance=tvars, YLabel='Value', title=title, sLabel = sLabel, barSpace = sw)
filename= webqtlUtil.genRandStr("Bar_")
- c.save(webqtlConfig.IMGDIR+filename, format='gif')
+ c.save(webqtlConfig.GENERATED_IMAGE_DIR+filename, format='gif')
img=HT.Image('/image/'+filename+'.gif',border=0)
return img
diff --git a/wqflask/maintenance/get_group_samplelists.py b/wqflask/maintenance/get_group_samplelists.py
index b8397b47..a9059fad 100755
--- a/wqflask/maintenance/get_group_samplelists.py
+++ b/wqflask/maintenance/get_group_samplelists.py
@@ -6,7 +6,6 @@ import gzip
from base import webqtlConfig
-
def process_genofiles(geno_dir=webqtlConfig.GENODIR):
print("Yabba")
#sys.exit("Dabba")
@@ -54,4 +53,4 @@ def get_samplelist_from_plink(genofilename):
line = line.split(" ")
samplelist.append(line[0])
- return samplelist \ No newline at end of file
+ return samplelist
diff --git a/wqflask/utility/tools.py b/wqflask/utility/tools.py
index 0f2e4d88..c0f6a49a 100644
--- a/wqflask/utility/tools.py
+++ b/wqflask/utility/tools.py
@@ -79,6 +79,15 @@ def flat_files(subdir=None):
return valid_path(base+"/"+subdir)
return valid_path(base)
+def assert_dir(dir):
+ if not valid_path(dir):
+ raise Exception("ERROR: can not find directory "+dir)
+ return dir
+
+def mk_dir(dir):
+ os.makedirs(dir)
+ return assert_dir(dir)
+
def locate(name, subdir=None):
"""
Locate a static flat file in the GENENETWORK_FILES environment.
@@ -98,7 +107,7 @@ def locate(name, subdir=None):
if subdir: sys.stderr.write(subdir)
raise IOError("Can not locate "+name+" in "+base)
-def locate_without_error(name, subdir=None):
+def locate_ignore_error(name, subdir=None):
"""
Locate a static flat file in the GENENETWORK_FILES environment.
diff --git a/wqflask/wqflask/correlation/show_corr_results.py b/wqflask/wqflask/correlation/show_corr_results.py
index 21a2c26c..06b4860e 100755
--- a/wqflask/wqflask/correlation/show_corr_results.py
+++ b/wqflask/wqflask/correlation/show_corr_results.py
@@ -943,7 +943,7 @@ class CorrelationResults(object):
use_tissue_corr = True
DatabaseFileName = self.getFileName( target_db_name=self.target_db_name )
- datasetFile = open(webqtlConfig.TEXTDIR+DatabaseFileName,'r')
+ datasetFile = open(webqtlConfig.CACHEDIR+DatabaseFileName,'r')
#XZ, 01/08/2009: read the first line
line = datasetFile.readline()
diff --git a/wqflask/wqflask/correlation_matrix/show_corr_matrix.py b/wqflask/wqflask/correlation_matrix/show_corr_matrix.py
index 6bc0ef77..f74e655d 100755
--- a/wqflask/wqflask/correlation_matrix/show_corr_matrix.py
+++ b/wqflask/wqflask/correlation_matrix/show_corr_matrix.py
@@ -43,7 +43,6 @@ from pprint import pformat as pf
from htmlgen import HTMLgen2 as HT
import reaper
-from base import webqtlConfig
from utility.THCell import THCell
from utility.TDCell import TDCell
from base.trait import GeneralTrait
diff --git a/wqflask/wqflask/heatmap/heatmap.py b/wqflask/wqflask/heatmap/heatmap.py
index 40f518f0..61847bc3 100644
--- a/wqflask/wqflask/heatmap/heatmap.py
+++ b/wqflask/wqflask/heatmap/heatmap.py
@@ -26,8 +26,6 @@ import reaper
from base.trait import GeneralTrait
from base import data_set
from base import species
-from base import webqtlConfig
-from utility import webqtlUtil
# from wqflask.my_pylmm.pyLMM import lmm
# from wqflask.my_pylmm.pyLMM import input
from utility import helper_functions
diff --git a/wqflask/wqflask/interval_analyst/IntervalAnalystPage.py b/wqflask/wqflask/interval_analyst/IntervalAnalystPage.py
index ec9aa29c..f45ec0c4 100755
--- a/wqflask/wqflask/interval_analyst/IntervalAnalystPage.py
+++ b/wqflask/wqflask/interval_analyst/IntervalAnalystPage.py
@@ -45,40 +45,40 @@ class IntervalAnalystPage(templatePage):
#A dictionary that lets us map the html form names "txStart_mm6" -> "Mb Start (mm8)"
#the first item is the short name (column headers) and the second item is the long name (dropdown list)
# [short name, long name, category]
- columnNames = {"GeneSymbol" : ["Gene", "Gene Name", 'gene'],
+ columnNames = {"GeneSymbol" : ["Gene", "Gene Name", 'gene'],
"GeneDescription" : ["Description", "Gene Description", 'species'],
- 'GeneNeighborsCount' : ["Neighbors", "Gene Neighbors", 'gene'],
- 'GeneNeighborsRange' : ["Neighborhood", "Gene Neighborhood (Mb)", 'gene'],
- 'GeneNeighborsDensity' : ["Gene Density", "Gene Density (Neighbors/Mb)", 'gene'],
+ 'GeneNeighborsCount' : ["Neighbors", "Gene Neighbors", 'gene'],
+ 'GeneNeighborsRange' : ["Neighborhood", "Gene Neighborhood (Mb)", 'gene'],
+ 'GeneNeighborsDensity' : ["Gene Density", "Gene Density (Neighbors/Mb)", 'gene'],
"ProteinID" : ["Prot ID", "Protein ID", 'protein'],
- "Chromosome" : ["Chr", "Chromosome", 'species'],
- "TxStart" : ["Start", "Mb Start", 'species'],
- "TxEnd" : ["End", "Mb End", 'species'],
- "GeneLength" : ["Length", "Kb Length", 'species'],
- "cdsStart" : ["CDS Start", "Mb CDS Start", 'species'],
+ "Chromosome" : ["Chr", "Chromosome", 'species'],
+ "TxStart" : ["Start", "Mb Start", 'species'],
+ "TxEnd" : ["End", "Mb End", 'species'],
+ "GeneLength" : ["Length", "Kb Length", 'species'],
+ "cdsStart" : ["CDS Start", "Mb CDS Start", 'species'],
"cdsEnd" : ["CDS End", "Mb CDS End", 'species'],
- "exonCount" : ["Num Exons", "Exon Count", 'species'],
- "exonStarts" : ["Exon Starts", "Exon Starts", 'species'],
- "exonEnds" : ["Exon Ends", "Exon Ends", 'species'],
- "Strand" : ["Strand", "Strand", 'species'],
+ "exonCount" : ["Num Exons", "Exon Count", 'species'],
+ "exonStarts" : ["Exon Starts", "Exon Starts", 'species'],
+ "exonEnds" : ["Exon Ends", "Exon Ends", 'species'],
+ "Strand" : ["Strand", "Strand", 'species'],
"GeneID" : ["Gene ID", "Gene ID", 'species'],
- "GenBankID" : ["GenBank", "GenBank ID", 'species'],
+ "GenBankID" : ["GenBank", "GenBank ID", 'species'],
"UnigenID" : ["Unigen", "Unigen ID", 'species'],
- "NM_ID" : ["NM ID", "NM ID", 'species'],
+ "NM_ID" : ["NM ID", "NM ID", 'species'],
"kgID" : ["kg ID", "kg ID", 'species'],
- "snpCount" : ["SNPs", "SNP Count", 'species'],
- "snpDensity" : ["SNP Density", "SNP Density", 'species'],
- "lrs" : ["LRS", "Likelihood Ratio Statistic", 'misc'],
- "lod" : ["LOD", "Likelihood Odds Ratio", 'misc'],
- "pearson" : ["Pearson", "Pearson Product Moment", 'misc'],
- "literature" : ["Lit Corr", "Literature Correlation", 'misc'],
+ "snpCount" : ["SNPs", "SNP Count", 'species'],
+ "snpDensity" : ["SNP Density", "SNP Density", 'species'],
+ "lrs" : ["LRS", "Likelihood Ratio Statistic", 'misc'],
+ "lod" : ["LOD", "Likelihood Odds Ratio", 'misc'],
+ "pearson" : ["Pearson", "Pearson Product Moment", 'misc'],
+ "literature" : ["Lit Corr", "Literature Correlation", 'misc'],
}
###Species Freeze
speciesFreeze = {'mouse':'mm9', 'rat':'rn3', 'human':'hg19'}
for key in speciesFreeze.keys():
speciesFreeze[speciesFreeze[key]] = key
-
+
def __init__(self, fd):
templatePage.__init__(self, fd)
@@ -86,7 +86,7 @@ class IntervalAnalystPage(templatePage):
fd.formdata['remote_ip'] = fd.remote_ip
if not self.openMysql():
return
-
+
self.species = fd.formdata.getvalue("species", "mouse")
try:
self.startMb = float(fd.formdata.getvalue("startMb"))
@@ -96,7 +96,7 @@ class IntervalAnalystPage(templatePage):
self.endMb = float(fd.formdata.getvalue("endMb"))
except:
self.endMb = self.startMb + 10
-
+
self.Chr = fd.formdata.getvalue("chromosome", "1")
self.xls = fd.formdata.getvalue("xls", "1")
try:
@@ -107,38 +107,38 @@ class IntervalAnalystPage(templatePage):
self.diffColDefault = self.diffCol = []
if self.species != 'mouse':
self.diffColDefault = [2, 3]#default is B6 and D2 for other species
-
+
controlFrm, dispFields = self.genControlForm(fd)
geneTable, filename = self.genGeneTable(fd, dispFields)
-
+
infoTD = HT.TD(width=400, valign= "top")
- infoTD.append(HT.Paragraph("Interval Analyst : Chr %s" % self.Chr, Class="title"),
- HT.Strong("Species : "), self.species.title(), HT.BR(),
- HT.Strong("Database : "), "UCSC %s" % self.speciesFreeze[self.species], HT.BR(),
- HT.Strong("Range : "), "%2.6f Mb - %2.6f Mb" % (self.startMb, self.endMb), HT.BR(),
+ infoTD.append(HT.Paragraph("Interval Analyst : Chr %s" % self.Chr, Class="title"),
+ HT.Strong("Species : "), self.species.title(), HT.BR(),
+ HT.Strong("Database : "), "UCSC %s" % self.speciesFreeze[self.species], HT.BR(),
+ HT.Strong("Range : "), "%2.6f Mb - %2.6f Mb" % (self.startMb, self.endMb), HT.BR(),
)
if filename:
infoTD.append(HT.BR(), HT.BR(), HT.Href(text="Download", url = "/tmp/" + filename, Class="normalsize")
, " output in MS excel format.")
-
+
mainTable = HT.TableLite(HT.TR(infoTD, HT.TD(controlFrm, Class="doubleBorder", width=400), HT.TD("&nbsp;", width="")), cellpadding=10)
mainTable.append(HT.TR(HT.TD(geneTable, colspan=3)))
self.dict['body'] = HT.TD(mainTable)
self.dict['title'] = "Interval Analyst"
-
+
def genGeneTable(self, fd, dispFields):
filename = ""
if self.xls:
#import pyXLWriter as xl
filename = "IntAn_Chr%s_%2.6f-%2.6f" % (self.Chr, self.startMb, self.endMb)
filename += ".xls"
-
+
# Create a new Excel workbook
workbook = xl.Writer(os.path.join(webqtlConfig.TMPDIR, filename))
worksheet = workbook.add_worksheet()
titleStyle = workbook.add_format(align = 'left', bold = 0, size=18, border = 1, border_color="gray")
headingStyle = workbook.add_format(align = 'center', bold = 1, size=13, fg_color = 0x1E, color="white", border = 1, border_color="gray")
-
+
##Write title Info
worksheet.write([0, 0], "GeneNetwork Interval Analyst Table", titleStyle)
worksheet.write([1, 0], "%s%s" % (webqtlConfig.PORTADDR, os.path.join(webqtlConfig.CGIDIR, self._scriptfile)))
@@ -148,12 +148,12 @@ class IntervalAnalystPage(templatePage):
worksheet.write([4, 0], "Search by : %s" % fd.formdata['remote_ip'])
worksheet.write([5, 0], "view region : Chr %s %2.6f - %2.6f Mb" % (self.Chr, self.startMb, self.endMb))
nTitleRow = 7
-
+
geneTable = HT.TableLite(Class="collap", cellpadding=5)
headerRow = HT.TR(HT.TD(" ", Class="fs13 fwb ffl b1 cw cbrb", width="1"))
if self.xls:
worksheet.write([nTitleRow, 0], "Index", headingStyle)
-
+
for ncol, column in enumerate(dispFields):
if len(column) == 1:
headerRow.append(HT.TD(self.columnNames[column[0]][0], Class="fs13 fwb ffl b1 cw cbrb", NOWRAP=1,align="Center"))
@@ -162,24 +162,24 @@ class IntervalAnalystPage(templatePage):
worksheet.write([nTitleRow, ncol+1], colTitle, headingStyle)
worksheet.set_column([ncol+1, ncol+1], 2*len(colTitle))
else:
- headerRow.append(HT.TD(self.columnNames[column[0]][0], HT.BR(), " (%s)" % self.speciesFreeze[column[1]],
+ headerRow.append(HT.TD(self.columnNames[column[0]][0], HT.BR(), " (%s)" % self.speciesFreeze[column[1]],
Class="fs13 fwb ffl b1 cw cbrb", NOWRAP=1, align="Center"))
if self.xls:
colTitle = self.columnNames[column[0]][0] + " (%s)" % self.speciesFreeze[column[1]]
worksheet.write([nTitleRow, ncol+1], colTitle, headingStyle)
worksheet.set_column([ncol+1, ncol+1], 2*len(colTitle))
- #headerRow.append(HT.TD(self.columnNames[column[0]][0], HT.BR(),
- # "(%s %s)" % (column[1].title(), self.speciesFreeze[column[1]]),
+ #headerRow.append(HT.TD(self.columnNames[column[0]][0], HT.BR(),
+ # "(%s %s)" % (column[1].title(), self.speciesFreeze[column[1]]),
# Class="colorBlue", NOWRAP=1, align="Center"))
geneTable.append(headerRow)
-
+
geneCol = GeneUtil.loadGenes(self.cursor, self.Chr, self.diffColDefault, self.startMb, self.endMb, species=self.species)
for gIndex, theGO in enumerate(geneCol):
geneRow = HT.TR(HT.TD(gIndex+1, Class="fs12 fwn b1", align="right"))
if self.xls:
nTitleRow += 1
worksheet.write([nTitleRow, 0], gIndex + 1)
-
+
for ncol, column in enumerate(dispFields):
if len(column) == 1 or column[1]== self.species:
keyValue = ""
@@ -196,17 +196,17 @@ class IntervalAnalystPage(templatePage):
curGO = theGO[subGO]
if theGO[subGO].has_key(fieldName):
keyValue = theGO[subGO][fieldName]
-
+
if self.xls:
worksheet.write([nTitleRow, ncol+1], keyValue)
geneRow.append(self.formatTD(keyValue, fieldName, curSpecies, curGO))
-
+
geneTable.append(geneRow)
-
+
if self.xls:
workbook.close()
return geneTable, filename
-
+
def formatTD(self, keyValue, fieldName, Species, theGO):
if keyValue is None:
keyValue = ""
@@ -219,7 +219,7 @@ class IntervalAnalystPage(templatePage):
keyValue = ""
return HT.TD(keyValue, Class="fs12 fwn b1", width=300)
elif fieldName in ("GeneSymbol"):
- webqtlLink = HT.Href("./%s?cmd=sch&gene=%s&alias=1&species=%s" % (webqtlConfig.SCRIPTFILE, keyValue, Species),
+ webqtlLink = HT.Href("./%s?cmd=sch&gene=%s&alias=1&species=%s" % (webqtlConfig.SCRIPTFILE, keyValue, Species),
HT.Image("/images/webqtl_search.gif", border=0, valign="top"), target="_blank")
if theGO['GeneID']:
geneSymbolLink = HT.Href(webqtlConfig.NCBI_LOCUSID % theGO['GeneID'], keyValue, Class="normalsize", target="_blank")
@@ -236,8 +236,8 @@ class IntervalAnalystPage(templatePage):
return HT.TD(keyValue, Class="fs12 fwn b1",align="right")
elif fieldName in ("snpCount"):
if keyValue:
- snpString = HT.Href(url="%s&chr=%s&start=%s&end=%s&geneName=%s&s1=%d&s2=%d" % (os.path.join(webqtlConfig.CGIDIR, 'main.py?FormID=snpBrowser'),
- theGO["Chromosome"], theGO["TxStart"], theGO["TxEnd"], theGO["GeneSymbol"], self.diffColDefault[0], self.diffColDefault[1]),
+ snpString = HT.Href(url="%s&chr=%s&start=%s&end=%s&geneName=%s&s1=%d&s2=%d" % (os.path.join(webqtlConfig.CGIDIR, 'main.py?FormID=snpBrowser'),
+ theGO["Chromosome"], theGO["TxStart"], theGO["TxEnd"], theGO["GeneSymbol"], self.diffColDefault[0], self.diffColDefault[1]),
text=theGO["snpCount"], target="_blank", Class="normalsize")
else:
snpString = keyValue
@@ -252,13 +252,13 @@ class IntervalAnalystPage(templatePage):
return HT.TD(keyValue, Class="fs12 fwn b1",NOWRAP=1)
else:
return HT.TD(keyValue, Class="fs12 fwn b1",NOWRAP=1,align="right")
-
+
def genControlForm(self, fd):
##desc GeneList
self.cursor.execute("Desc GeneList")
GeneListFields = self.cursor.fetchall()
GeneListFields = map(lambda X: X[0], GeneListFields)
-
+
#group columns by category--used for creating the dropdown list of possible columns
categories = {}
for item in self.columnNames.keys():
@@ -267,7 +267,7 @@ class IntervalAnalystPage(templatePage):
categories[category[-1]] = [item ]
else:
categories[category[-1]] = categories[category[-1]]+[item]
-
+
##List All Species in the Gene Table
speciesDict = {}
self.cursor.execute("select Species.Name, GeneList.SpeciesId from Species, GeneList where \
@@ -292,34 +292,34 @@ class IntervalAnalystPage(templatePage):
pass
AppliedField.append(item2)
categories[specName] = AppliedField
-
+
categoriesOrder += ['misc']
-
+
############################################################
## Create the list of possible columns for the dropdown list
############################################################
allColumnsList = HT.Select(name="allColumns", Class="snpBrowserDropBox")
-
+
for category in categoriesOrder:
allFields = categories[category]
if allFields:
geneOpt = HT.Optgroup(label=category.title())
for item in allFields:
if category in self.speciesFreeze.keys():
- geneOpt.append(("%s (%s %s)" % (self.columnNames[item][1], category.title(), self.speciesFreeze[category]),
+ geneOpt.append(("%s (%s %s)" % (self.columnNames[item][1], category.title(), self.speciesFreeze[category]),
"%s__%s" % (item, self.speciesFreeze[category])))
else:
geneOpt.append((self.columnNames[item][1], item))
geneOpt.sort()
allColumnsList.append(geneOpt)
-
+
######################################
## Create the list of selected columns
######################################
-
+
#cols contains the value of all the selected columns
submitCols = cols = fd.formdata.getvalue("columns", "default")
-
+
if cols == "default":
if self.species=="mouse": #these are the same columns that are shown on intervalPage.py
cols = ['GeneSymbol', 'GeneDescription', 'Chromosome', 'TxStart', 'Strand', 'GeneLength', 'GeneID', 'NM_ID', 'snpCount', 'snpDensity']
@@ -331,12 +331,12 @@ class IntervalAnalystPage(templatePage):
else:
if type(cols)==type(""):
cols = [cols]
-
+
colsLst = []
dispFields = []
for column in cols:
if submitCols == "default" and column not in ('GeneSymbol') and (column in GeneListFields or column in speciesField):
- colsLst.append(("%s (%s %s)" % (self.columnNames[column][1], self.species.title(), self.speciesFreeze[self.species]),
+ colsLst.append(("%s (%s %s)" % (self.columnNames[column][1], self.species.title(), self.speciesFreeze[self.species]),
"%s__%s" % (column, self.speciesFreeze[self.species])))
dispFields.append([column, self.species])
else:
@@ -346,17 +346,17 @@ class IntervalAnalystPage(templatePage):
dispFields.append([column])
else:
thisSpecies = self.speciesFreeze[column2[1]]
- colsLst.append(("%s (%s %s)" % (self.columnNames[column2[0]][1], thisSpecies.title(), column2[1]),
+ colsLst.append(("%s (%s %s)" % (self.columnNames[column2[0]][1], thisSpecies.title(), column2[1]),
column))
dispFields.append((column2[0], thisSpecies))
selectedColumnsList = HT.Select(name="columns", Class="snpBrowserSelectBox", multiple="true", data=colsLst, size=6)
-
+
##########################
## Create the columns form
- ##########################
+ ##########################
columnsForm = HT.Form(name="columnsForm", submit=HT.Input(type='hidden'), cgi=os.path.join(webqtlConfig.CGIDIR, self._scriptfile), enctype="multipart/form-data")
columnsForm.append(HT.Input(type="hidden", name="fromdatabase", value= fd.formdata.getvalue("fromdatabase", "unknown")))
- columnsForm.append(HT.Input(type="hidden", name="species", value=self.species))
+ columnsForm.append(HT.Input(type="hidden", name="species", value=self.species))
if self.diffCol:
columnsForm.append(HT.Input(type="hidden", name="s1", value=self.diffCol[0]))
columnsForm.append(HT.Input(type="hidden", name="s2", value=self.diffCol[1]))
@@ -366,8 +366,8 @@ class IntervalAnalystPage(templatePage):
removeButton = HT.Input(type="button", name="remove", value="Remove", Class="button", onClick="removeFromList(this.form.columns.selectedIndex, this.form.columns)")
upButton = HT.Input(type="button", name="up", value="Up", Class="button", onClick="swapOptions(this.form.columns.selectedIndex, this.form.columns.selectedIndex-1, this.form.columns)")
downButton = HT.Input(type="button", name="down", value="Down", Class="button", onClick="swapOptions(this.form.columns.selectedIndex, this.form.columns.selectedIndex+1, this.form.columns)")
- clearButton = HT.Input(type="button", name="clear", value="Clear", Class="button", onClick="deleteAllElements(this.form.columns)")
- submitButton = HT.Input(type="submit", value="Refresh", Class="button", onClick="selectAllElements(this.form.columns)")
+ clearButton = HT.Input(type="button", name="clear", value="Clear", Class="button", onClick="deleteAllElements(this.form.columns)")
+ submitButton = HT.Input(type="submit", value="Refresh", Class="button", onClick="selectAllElements(this.form.columns)")
selectChrBox = HT.Select(name="chromosome")
self.cursor.execute("""
@@ -375,11 +375,11 @@ class IntervalAnalystPage(templatePage):
Chr_Length.Name, Length from Chr_Length, Species
where
Chr_Length.SpeciesId = Species.Id AND
- Species.Name = '%s'
+ Species.Name = '%s'
Order by
Chr_Length.OrderId
""" % self.species)
-
+
results = self.cursor.fetchall()
for chrInfo in results:
selectChrBox.append((chrInfo[0], chrInfo[0]))
@@ -401,5 +401,5 @@ class IntervalAnalystPage(templatePage):
#columnsForm.append(HT.Input(type="hidden", name="sort", value=diffCol),
# HT.Input(type="hidden", name="identification", value=identification),
# HT.Input(type="hidden", name="traitInfo", value=traitInfo))
-
+
return columnsForm, dispFields
diff --git a/wqflask/wqflask/marker_regression/MarkerRegressionPage.py b/wqflask/wqflask/marker_regression/MarkerRegressionPage.py
index d02d80b3..455fcf95 100755
--- a/wqflask/wqflask/marker_regression/MarkerRegressionPage.py
+++ b/wqflask/wqflask/marker_regression/MarkerRegressionPage.py
@@ -140,7 +140,7 @@ class MarkerRegressionPage(templatePage):
intCanvas = pid.PILCanvas(size=(self.graphWidth,self.graphHeight))
gifmap = self.plotIntMappingForPLINK(fd, intCanvas, startMb = self.startMb, endMb = self.endMb, plinkResultDict=plinkResultDict)
- intCanvas.save(os.path.join(webqtlConfig.IMGDIR, filename), format='png')
+ intCanvas.save(os.path.join(webqtlConfig.GENERATED_IMAGE_DIR, filename), format='png')
intImg=HT.Image('/image/'+filename+'.png', border=0, usemap='#WebQTLImageMap')
TD_LR = HT.TR(HT.TD(HT.Blockquote(gifmap,intImg, HT.P()), bgColor='#eeeeee', height = 200))
@@ -249,7 +249,7 @@ class MarkerRegressionPage(templatePage):
intCanvas = pid.PILCanvas(size=(self.graphWidth,self.graphHeight))
gifmap = self.plotIntMapping(fd, intCanvas, startMb = self.startMb, endMb = self.endMb, showLocusForm= "")
filename= webqtlUtil.genRandStr("Itvl_")
- intCanvas.save(os.path.join(webqtlConfig.IMGDIR, filename), format='png')
+ intCanvas.save(os.path.join(webqtlConfig.GENERATED_IMAGE_DIR, filename), format='png')
intImg=HT.Image('/image/'+filename+'.png', border=0, usemap='#WebQTLImageMap')
################################################################
@@ -458,7 +458,7 @@ class MarkerRegressionPage(templatePage):
#plotBar(myCanvas,10,10,390,290,LRSArray,XLabel='LRS',YLabel='Frequency',title=' Histogram of Permutation Test',identification=fd.identification)
Plot.plotBar(myCanvas, LRSArray,XLabel='LRS',YLabel='Frequency',title=' Histogram of Permutation Test')
filename= webqtlUtil.genRandStr("Reg_")
- myCanvas.save(webqtlConfig.IMGDIR+filename, format='gif')
+ myCanvas.save(webqtlConfig.GENERATED_IMAGE_DIR+filename, format='gif')
img=HT.Image('/image/'+filename+'.gif',border=0,alt='Histogram of Permutation Test')
if fd.suggestive == None:
diff --git a/wqflask/wqflask/marker_regression/marker_regression.py b/wqflask/wqflask/marker_regression/marker_regression.py
index 36334317..265f9473 100644
--- a/wqflask/wqflask/marker_regression/marker_regression.py
+++ b/wqflask/wqflask/marker_regression/marker_regression.py
@@ -30,7 +30,7 @@ from flask import Flask, g
from base.trait import GeneralTrait
from base import data_set
from base import species
-from base import webqtlConfig
+# from base import webqtlConfig
from utility import webqtlUtil
from utility import helper_functions
from utility import Plot, Bunch
diff --git a/wqflask/wqflask/marker_regression/marker_regression_gn1.py b/wqflask/wqflask/marker_regression/marker_regression_gn1.py
index 01303b0f..decde579 100644
--- a/wqflask/wqflask/marker_regression/marker_regression_gn1.py
+++ b/wqflask/wqflask/marker_regression/marker_regression_gn1.py
@@ -178,8 +178,8 @@ class MarkerRegression(object):
self.species = start_vars['species']
#Needing for form submission when doing single chr mapping or remapping after changing options
- self.vals = start_vars['vals']
- self.mapping_method = start_vars['mapping_method']
+ self.vals = start_vars['vals']
+ self.mapping_method = start_vars['mapping_method']
if self.mapping_method == "rqtl_geno":
self.mapmethod_rqtl_geno = start_vars['method']
self.mapmodel_rqtl_geno = start_vars['model']
@@ -232,7 +232,7 @@ class MarkerRegression(object):
self.significant = start_vars['significant']
else:
self.nperm = 0
-
+
if 'bootCheck' in start_vars.keys():
self.bootChecked = start_vars['bootCheck']
else:
@@ -308,7 +308,7 @@ class MarkerRegression(object):
if 'showSNP' in start_vars.keys():
self.SNPChecked = start_vars['showSNP']
else:
- self.SNPChecked = False
+ self.SNPChecked = False
if 'showGenes' in start_vars.keys():
self.geneChecked = start_vars['showGenes']
else:
@@ -321,7 +321,7 @@ class MarkerRegression(object):
self.endMb = float(start_vars['endMb'])
except:
self.endMb = -1
- try:
+ try:
self.lrsMax = float(start_vars['lrsMax'])
except:
self.lrsMax = 0
@@ -363,7 +363,7 @@ class MarkerRegression(object):
self.ChrList.append((indChr.name, i))
-
+
self.ChrLengthMbList = g.db.execute("""
Select
Length from Chr_Length, InbredSet
@@ -517,7 +517,7 @@ class MarkerRegression(object):
chrName = self.selectedChr
# Draw the genes for this chromosome / region of this chromosome
webqtldatabase = self.dataset.name
-
+
if self.dataset.group.species == "mouse":
self.geneCol = GeneUtil.loadGenes(chrName, self.diffCol, self.startMb, self.endMb, webqtldatabase, "mouse")
elif self.dataset.group.species == "rat":
@@ -533,11 +533,11 @@ class MarkerRegression(object):
#
# #GENEID = fd.formdata.getvalue('GeneId') or None
# GENEID = None
- #
+ #
# geneTableContainer = HT.Div(Id="sortable") #Div to hold table
# geneTable = self.geneTable(self.geneCol,GENEID)
# geneTableContainer.append(geneTable)
- #
+ #
# mainfmName = webqtlUtil.genRandStr("fm_")
# tableForm = HT.Form(cgi=os.path.join(webqtlConfig.CGIDIR, webqtlConfig.SCRIPTFILE), enctype='multipart/form-data', name=mainfmName, submit=HT.Input(type='hidden'))
# tableForm.append(HT.Input(name='FormID', value='', type='hidden'))
@@ -552,22 +552,22 @@ class MarkerRegression(object):
#else:
showLocusForm = ""
intCanvas = pid.PILCanvas(size=(self.graphWidth, self.graphHeight))
- gifmap = self.plotIntMapping(intCanvas, startMb = self.startMb, endMb = self.endMb, showLocusForm= showLocusForm)
+ gifmap = self.plotIntMapping(intCanvas, startMb = self.startMb, endMb = self.endMb, showLocusForm= showLocusForm)
self.gifmap = gifmap.__str__()
#print("GIFMAP:", gifmap.__str__())
self.filename= webqtlUtil.genRandStr("Itvl_")
- intCanvas.save(os.path.join(webqtlConfig.IMGDIR, self.filename), format='jpeg')
+ intCanvas.save(os.path.join(webqtlConfig.GENERATED_IMAGE_DIR, self.filename), format='jpeg')
intImg=HT.Image('/image/'+self.filename+'.png', border=0, usemap='#WebQTLImageMap')
#Scales plot differently for high resolution
if self.draw2X:
intCanvasX2 = pid.PILCanvas(size=(self.graphWidth*2,self.graphHeight*2))
gifmapX2 = self.plotIntMapping(intCanvasX2, startMb = self.startMb, endMb = self.endMb, showLocusForm= showLocusForm, zoom=2)
- intCanvasX2.save(os.path.join(webqtlConfig.IMGDIR, self.filename+"X2"), format='png')
+ intCanvasX2.save(os.path.join(webqtlConfig.GENERATED_IMAGE_DIR, self.filename+"X2"), format='png')
#DLintImgX2=HT.Href(text='Download',url = '/image/'+self.filename+'X2.png', Class='smallsize', target='_blank')
-
+
#textUrl = self.writeQTL2Text(fd, self.filename)
################################################################
@@ -597,7 +597,7 @@ class MarkerRegression(object):
showLocusForm.append(intImg)
else:
showLocusForm = intImg
-
+
if self.permChecked and self.nperm > 0 and not self.multipleInterval and 0 < self.nperm:
self.perm_filename = self.drawPermutationHistogram()
#perm_text_file = self.permutationTextFile()
@@ -667,7 +667,7 @@ class MarkerRegression(object):
TD_LR.append(HT.Blockquote(tableForm))
self.body = TD_LR
-
+
#self.dict['body'] = TD_LR
#self.dict['title'] = "Mapping"
@@ -858,7 +858,7 @@ class MarkerRegression(object):
BootCoord = []
i = 0
startX = xLeftOffset
-
+
if self.selectedChr == -1: #ZS: If viewing full genome/all chromosomes
for j, _chr in enumerate(self.genotype):
BootCoord.append( [])
@@ -881,8 +881,8 @@ class MarkerRegression(object):
else:
Xc = startX + (_locus.cM-_chr[0].cM)*plotXScale
BootCoord[-1].append([Xc, self.bootResult[i]])
- i += 1
-
+ i += 1
+
#reduce bootResult
if self.selectedChr > -1:
maxBootBar = 80.0
@@ -1411,7 +1411,7 @@ class MarkerRegression(object):
if _strains[ii] in self.dataset.group.samplelist:
temp = GeneralObject(name=_strains[ii], value=_val)
smd.append(temp)
-
+
smd.sort(lambda A, B: cmp(A.value, B.value))
smd.reverse()
@@ -1566,14 +1566,14 @@ class MarkerRegression(object):
firstGene = 0
else:
lastGene = 0
-
+
for j, _geno in enumerate (self.genotype[0][1].genotype):
plotbxd=0
for item in smd:
if item.name == samplelist[j]:
- plotbxd=1
-
+ plotbxd=1
+
if (plotbxd == 1):
ind = 0
@@ -1620,28 +1620,28 @@ class MarkerRegression(object):
currentChromosome = self.genotype[0].name
i = 0
-
+
paddingTop = yTopOffset
ucscPaddingTop = paddingTop + self.WEBQTL_BAND_HEIGHT + self.BAND_SPACING
ensemblPaddingTop = ucscPaddingTop + self.UCSC_BAND_HEIGHT + self.BAND_SPACING
-
+
if zoom == 1:
for pixel in range(xLeftOffset, xLeftOffset + plotWidth, pixelStep):
-
+
calBase = self.kONE_MILLION*(startMb + (endMb-startMb)*(pixel-xLeftOffset-0.0)/plotWidth)
-
+
xBrowse1 = pixel
xBrowse2 = min(xLeftOffset + plotWidth, (pixel + pixelStep - 1))
-
+
WEBQTL_COORDS = "%d, %d, %d, %d" % (xBrowse1, paddingTop, xBrowse2, (paddingTop+self.WEBQTL_BAND_HEIGHT))
bandWidth = xBrowse2 - xBrowse1
WEBQTL_HREF = "javascript:rangeView('%s', %f, %f)" % (self.selectedChr - 1, max(0, (calBase-webqtlZoomWidth))/1000000.0, (calBase+webqtlZoomWidth)/1000000.0)
-
+
WEBQTL_TITLE = "Click to view this section of the genome in WebQTL"
gifmap.areas.append(HT.Area(shape='rect',coords=WEBQTL_COORDS,href=WEBQTL_HREF, title=WEBQTL_TITLE))
canvas.drawRect(xBrowse1, paddingTop, xBrowse2, (paddingTop + self.WEBQTL_BAND_HEIGHT), edgeColor=self.CLICKABLE_WEBQTL_REGION_COLOR, fillColor=self.CLICKABLE_WEBQTL_REGION_COLOR)
canvas.drawLine(xBrowse1, paddingTop, xBrowse1, (paddingTop + self.WEBQTL_BAND_HEIGHT), color=self.CLICKABLE_WEBQTL_REGION_OUTLINE_COLOR)
-
+
UCSC_COORDS = "%d, %d, %d, %d" %(xBrowse1, ucscPaddingTop, xBrowse2, (ucscPaddingTop+self.UCSC_BAND_HEIGHT))
if self.species == "mouse":
UCSC_HREF = "http://genome.ucsc.edu/cgi-bin/hgTracks?db=%s&position=chr%s:%d-%d&hgt.customText=%s/snp/chr%s" % (self._ucscDb, self.selectedChr, max(0, calBase-flankingWidthInBases), calBase+flankingWidthInBases, webqtlConfig.PORTADDR, self.selectedChr)
@@ -1651,7 +1651,7 @@ class MarkerRegression(object):
gifmap.areas.append(HT.Area(shape='rect',coords=UCSC_COORDS,href=UCSC_HREF, title=UCSC_TITLE))
canvas.drawRect(xBrowse1, ucscPaddingTop, xBrowse2, (ucscPaddingTop+self.UCSC_BAND_HEIGHT), edgeColor=self.CLICKABLE_UCSC_REGION_COLOR, fillColor=self.CLICKABLE_UCSC_REGION_COLOR)
canvas.drawLine(xBrowse1, ucscPaddingTop, xBrowse1, (ucscPaddingTop+self.UCSC_BAND_HEIGHT), color=self.CLICKABLE_UCSC_REGION_OUTLINE_COLOR)
-
+
ENSEMBL_COORDS = "%d, %d, %d, %d" %(xBrowse1, ensemblPaddingTop, xBrowse2, (ensemblPaddingTop+self.ENSEMBL_BAND_HEIGHT))
if self.species == "mouse":
ENSEMBL_HREF = "http://www.ensembl.org/Mus_musculus/contigview?highlight=&chr=%s&vc_start=%d&vc_end=%d&x=35&y=12" % (self.selectedChr, max(0, calBase-flankingWidthInBases), calBase+flankingWidthInBases)
@@ -1766,7 +1766,7 @@ class MarkerRegression(object):
ChrAInfo = []
preLpos = -1
distinctCount = 0.0
-
+
#if len(self.genotype) > 1:
if self.selectedChr == -1: #ZS: If viewing full genome/all chromosomes
for i, _chr in enumerate(self.genotype):
@@ -1809,7 +1809,7 @@ class MarkerRegression(object):
offsetA = -stepA
lineColor = pid.lightblue
startPosX = xLeftOffset
-
+
for j, ChrInfo in enumerate(ChrAInfo):
preLpos = -1
for i, item in enumerate(ChrInfo):
@@ -1877,7 +1877,7 @@ class MarkerRegression(object):
# lodm = self.LODFACTOR
# else:
# lodm = 1.0
-
+
#ZS: This is a mess, but I don't know a better way to account for different mapping methods returning results in different formats + the option to change between LRS and LOD
if self.lrsMax <= 0: #sliding scale
if "lrs_value" in self.qtlresults[0]:
@@ -1890,7 +1890,7 @@ class MarkerRegression(object):
else:
if self.permChecked and self.nperm > 0 and not self.multipleInterval:
self.significant = min(self.significant, webqtlConfig.MAXLRS)
- self.suggestive = min(self.suggestive, webqtlConfig.MAXLRS)
+ self.suggestive = min(self.suggestive, webqtlConfig.MAXLRS)
else:
pass
else:
@@ -1903,10 +1903,10 @@ class MarkerRegression(object):
else:
if self.permChecked and self.nperm > 0 and not self.multipleInterval:
self.significant = min(self.significant, webqtlConfig.MAXLRS)
- self.suggestive = min(self.suggestive, webqtlConfig.MAXLRS)
+ self.suggestive = min(self.suggestive, webqtlConfig.MAXLRS)
else:
pass
-
+
if self.permChecked and self.nperm > 0 and not self.multipleInterval:
LRS_LOD_Max = max(self.significant, LRS_LOD_Max)
@@ -1923,7 +1923,7 @@ class MarkerRegression(object):
LRSScale = 2.5
else:
LRSScale = 1.0
-
+
LRSAxisList = Plot.frange(LRSScale, LRS_LOD_Max, LRSScale)
#make sure the user's value appears on the y-axis
#update by NL 6-21-2011: round the LOD value to 100 when LRS_LOD_Max is equal to 460
@@ -1953,7 +1953,7 @@ class MarkerRegression(object):
#"Significant" and "Suggestive" Drawing Routine
# ======= Draw the thick lines for "Significant" and "Suggestive" ===== (crowell: I tried to make the SNPs draw over these lines, but piddle wouldn't have it...)
-
+
#ZS: I don't know if what I did here with this inner function is clever or overly complicated, but it's the only way I could think of to avoid duplicating the code inside this function
def add_suggestive_significant_lines_and_legend(start_pos_x, chr_length_dist):
rightEdge = int(start_pos_x + chr_length_dist*plotXScale - self.SUGGESTIVE_WIDTH/1.5)
@@ -1976,13 +1976,13 @@ class MarkerRegression(object):
start_pos_x += (chr_length_dist+self.GraphInterval)*plotXScale
return start_pos_x
-
+
for i, _chr in enumerate(self.genotype):
if self.selectedChr != -1:
if _chr.name == self.ChrList[self.selectedChr][0]:
startPosX = add_suggestive_significant_lines_and_legend(startPosX, self.ChrLengthDistList[0])
break
- else:
+ else:
continue
else:
startPosX = add_suggestive_significant_lines_and_legend(startPosX, self.ChrLengthDistList[i])
@@ -1997,7 +1997,7 @@ class MarkerRegression(object):
#else:
# dominanceMax = -1
lrsEdgeWidth = 2
-
+
if zoom == 2:
lrsEdgeWidth = 2 * lrsEdgeWidth
@@ -2018,7 +2018,7 @@ class MarkerRegression(object):
if qtlresult['chr'] != previous_chr and self.selectedChr == -1:
if self.manhattan_plot != True:
canvas.drawPolygon(LRSCoordXY,edgeColor=thisLRSColor,closed=0, edgeWidth=lrsEdgeWidth, clipX=(xLeftOffset, xLeftOffset + plotWidth))
-
+
if not self.multipleInterval and self.additiveChecked:
plusColor = self.ADDITIVE_COLOR_POSITIVE
minusColor = self.ADDITIVE_COLOR_NEGATIVE
@@ -2048,7 +2048,7 @@ class MarkerRegression(object):
canvas.drawLine(Xc0, Yc0, Xc, Yc, color=plusColor, width=lineWidth, clipX=(xLeftOffset, xLeftOffset + plotWidth))
else:
canvas.drawLine(Xc0, yZero - (Yc0-yZero), Xc, yZero - (Yc-yZero), color=minusColor, width=lineWidth, clipX=(xLeftOffset, xLeftOffset + plotWidth))
-
+
LRSCoordXY = []
AdditiveCoordXY = []
previous_chr = qtlresult['chr']
@@ -2061,7 +2061,7 @@ class MarkerRegression(object):
#startPosX += (self.ChrLengthDistList[j]+self.GraphInterval)*plotXScale
- #for j, _chr in enumerate(self.genotype):
+ #for j, _chr in enumerate(self.genotype):
#ZS: This is beause the chromosome value stored in qtlresult['chr'] can be (for example) either X or 20 depending upon the mapping method/scale used
if self.plotScale == "physic":
this_chr = str(self.ChrList[self.selectedChr][0])
@@ -2126,7 +2126,7 @@ class MarkerRegression(object):
if self.manhattan_plot != True:
canvas.drawPolygon(LRSCoordXY,edgeColor=thisLRSColor,closed=0, edgeWidth=lrsEdgeWidth, clipX=(xLeftOffset, xLeftOffset + plotWidth))
-
+
if not self.multipleInterval and self.additiveChecked:
plusColor = self.ADDITIVE_COLOR_POSITIVE
minusColor = self.ADDITIVE_COLOR_NEGATIVE
@@ -2156,7 +2156,7 @@ class MarkerRegression(object):
canvas.drawLine(Xc0, Yc0, Xc, Yc, color=plusColor, width=lineWidth, clipX=(xLeftOffset, xLeftOffset + plotWidth))
else:
canvas.drawLine(Xc0, yZero - (Yc0-yZero), Xc, yZero - (Yc-yZero), color=minusColor, width=lineWidth, clipX=(xLeftOffset, xLeftOffset + plotWidth))
-
+
if not self.multipleInterval and INTERCROSS and self.dominanceChecked:
plusColor = self.DOMINANCE_COLOR_POSITIVE
minusColor = self.DOMINANCE_COLOR_NEGATIVE
@@ -2186,7 +2186,7 @@ class MarkerRegression(object):
canvas.drawLine(Xc0, Yc0, Xc, Yc, color=plusColor, width=lineWidth, clipX=(xLeftOffset, xLeftOffset + plotWidth))
else:
canvas.drawLine(Xc0, yZero - (Yc0-yZero), Xc, yZero - (Yc-yZero), color=minusColor, width=lineWidth, clipX=(xLeftOffset, xLeftOffset + plotWidth))
-
+
###draw additive scale
if not self.multipleInterval and self.additiveChecked:
@@ -2222,7 +2222,7 @@ class MarkerRegression(object):
if zoom == 2:
fontZoom = 1.5
yTopOffset += 30
-
+
#calculate plot scale
if self.plotScale != 'physic':
self.ChrLengthDistList = self.ChrLengthCMList
@@ -2589,13 +2589,13 @@ class MarkerRegression(object):
perm_output = [value/4.16 for value in self.perm_output]
else:
perm_output = self.perm_output
-
+
Plot.plotBar(myCanvas, perm_output, XLabel=self.LRS_LOD, YLabel='Frequency', title=' Histogram of Permutation Test')
filename= webqtlUtil.genRandStr("Reg_")
myCanvas.save(webqtlConfig.IMGDIR+filename, format='gif')
-
+
return filename
-
+
# img=HT.Image('/image/'+filename+'.gif',border=0,alt='Histogram of Permutation Test')
# self.suggestive = self.perm_output[int(self.nperm*0.37-1)]
@@ -2609,9 +2609,9 @@ class MarkerRegression(object):
# permutation.append(HT.TR(HT.TD(img)),
# HT.TR(HT.TD('')),
# HT.TR(HT.TD('Total of %d permutations'%self.nperm)))
-
+
# return permutation
-
+
def permutationTextFile(self):
filename= webqtlUtil.genRandStr("Reg_")
fpText = open('%s.txt' % (webqtlConfig.TMPDIR+filename), 'wb')
@@ -2624,12 +2624,12 @@ class MarkerRegression(object):
'&nbsp;&nbsp;&nbsp;&nbsp;Significant LRS =%3.2f\n'%self.significant,
HT.BR(),
'&nbsp;&nbsp;&nbsp;&nbsp;Highly Significant LRS =%3.2f\n' % self.highlysignificant)
-
+
for lrs_value in self.perm_output:
fpText.write(str(lrs_value) + "\n")
-
+
textUrl = HT.Href(text = 'Download Permutation Results', url= '/tmp/'+filename+'.txt', target = "_blank", Class='fs12 fwn')
-
+
return textUrl
def geneTable(self, geneCol, refGene=None):
@@ -2654,7 +2654,7 @@ class MarkerRegression(object):
else:
gene_table = ""
- return gene_table
+ return gene_table
def getLiteratureCorrelation(cursor,geneId1=None,geneId2=None):
if not geneId1 or not geneId2:
@@ -2954,4 +2954,4 @@ And by voluntary, according to HFG when I talked to him, they have a choice betw
sortby = ("", "")
- return sortby \ No newline at end of file
+ return sortby
diff --git a/wqflask/wqflask/search_results.py b/wqflask/wqflask/search_results.py
index 52fe2e34..9941a4d3 100755
--- a/wqflask/wqflask/search_results.py
+++ b/wqflask/wqflask/search_results.py
@@ -26,7 +26,6 @@ from MySQLdb import escape_string as escape
# Instead of importing HT we're going to build a class below until we can eliminate it
# from htmlgen import HTMLgen2 as HT
-from base import webqtlConfig
from utility.benchmark import Bench
from base.data_set import create_dataset
from base.trait import GeneralTrait
diff --git a/wqflask/wqflask/show_trait/show_trait.py b/wqflask/wqflask/show_trait/show_trait.py
index 35f7fe5f..e80cf191 100755
--- a/wqflask/wqflask/show_trait/show_trait.py
+++ b/wqflask/wqflask/show_trait/show_trait.py
@@ -166,7 +166,7 @@ class ShowTrait(object):
return False
def check_pylmm_rqtl():
- if os.path.isfile(webqtlConfig.GENODIR+self.dataset.group.name+".geno") and (os.path.getsize(webqtlConfig.NEWGENODIR+self.dataset.group.name+".json") > 0):
+ if os.path.isfile(webqtlConfig.GENODIR+self.dataset.group.name+".geno") and (os.path.getsize(webqtlConfig.JSON_GENODIR+self.dataset.group.name+".json") > 0):
return True
else:
return False