aboutsummaryrefslogtreecommitdiff
path: root/wqflask
diff options
context:
space:
mode:
Diffstat (limited to 'wqflask')
-rw-r--r--wqflask/tests/api/test_gen_menu.py33
-rw-r--r--wqflask/wqflask/api/gen_menu.py83
2 files changed, 66 insertions, 50 deletions
diff --git a/wqflask/tests/api/test_gen_menu.py b/wqflask/tests/api/test_gen_menu.py
index 4a928d12..79c77fec 100644
--- a/wqflask/tests/api/test_gen_menu.py
+++ b/wqflask/tests/api/test_gen_menu.py
@@ -69,9 +69,11 @@ class TestGenMenu(unittest.TestCase):
@mock.patch('wqflask.api.gen_menu.g')
def test_get_species(self, db_mock):
- """Test that assertion is raised when dataset and dataset_name are defined"""
- db_mock.db.execute.return_value.fetchall.return_value = (('human', 'Human'),
- ('mouse', 'Mouse'))
+ """Test that assertion is raised when dataset and dataset_name
+ are defined"""
+ db_mock.db.execute.return_value.fetchall.return_value = (
+ ('human', 'Human'),
+ ('mouse', 'Mouse'))
self.assertEqual(get_species(),
[['human', 'Human'], ['mouse', 'Mouse']])
db_mock.db.execute.assert_called_once_with(
@@ -84,7 +86,8 @@ class TestGenMenu(unittest.TestCase):
db_mock.db.execute.return_value.fetchall.side_effect = [
# Mouse
(('BXD', 'BXD', None),
- ('HLC', 'Liver: Normal Gene Expression with Genotypes (Merck)', 'Test')),
+ ('HLC', 'Liver: Normal Gene Expression with Genotypes (Merck)',
+ 'Test')),
# Human
(('H_T1', "H_T", "DescriptionA"),
('H_T2', "H_T'", None))
@@ -111,12 +114,14 @@ class TestGenMenu(unittest.TestCase):
db_mock.db.execute.return_value.fetchone.return_value = None
phenotypes_exist("test")
db_mock.db.execute.assert_called_with(
- "SELECT Name FROM PublishFreeze WHERE PublishFreeze.Name = 'testPublish'"
+ "SELECT Name FROM PublishFreeze "
+ "WHERE PublishFreeze.Name = 'testPublish'"
)
@mock.patch('wqflask.api.gen_menu.g')
def test_phenotypes_exist_with_falsy_values(self, db_mock):
- """Test that phenotype check returns correctly when given a None value"""
+ """Test that phenotype check returns correctly when given
+ a None value"""
for x in [None, False, (), [], ""]:
db_mock.db.execute.return_value.fetchone.return_value = x
self.assertFalse(phenotypes_exist("test"))
@@ -139,7 +144,8 @@ class TestGenMenu(unittest.TestCase):
@mock.patch('wqflask.api.gen_menu.g')
def test_genotypes_exist_with_falsy_values(self, db_mock):
- """Test that genotype check returns correctly when given a None value"""
+ """Test that genotype check returns correctly when given
+ a None value"""
for x in [None, False, (), [], ""]:
db_mock.db.execute.return_value.fetchone.return_value = x
self.assertFalse(genotypes_exist("test"))
@@ -151,7 +157,6 @@ class TestGenMenu(unittest.TestCase):
db_mock.db.execute.return_value.fetchone.return_value = (x)
self.assertTrue(phenotypes_exist("test"))
-
@mock.patch('wqflask.api.gen_menu.g')
def test_build_datasets_with_type_phenotypes(self, db_mock):
"""Test that correct dataset is returned for a phenotype type"""
@@ -207,8 +212,9 @@ class TestGenMenu(unittest.TestCase):
self.assertEqual(build_datasets("Mouse", "HLC", "Genotypes"),
[["635", "HLCGeno", "HLC Genotypes"]])
db_mock.db.execute.assert_called_with(
- "SELECT InfoFiles.GN_AccesionId FROM InfoFiles, GenoFreeze, InbredSet " +
- "WHERE InbredSet.Name = 'HLC' AND GenoFreeze.InbredSetId = InbredSet.Id AND " +
+ "SELECT InfoFiles.GN_AccesionId FROM InfoFiles, "
+ "GenoFreeze, InbredSet WHERE InbredSet.Name = 'HLC' AND "
+ "GenoFreeze.InbredSetId = InbredSet.Id AND "
"InfoFiles.InfoPageName = GenoFreeze.ShortName " +
"ORDER BY GenoFreeze.CreateTime DESC"
)
@@ -218,7 +224,8 @@ class TestGenMenu(unittest.TestCase):
@mock.patch('wqflask.api.gen_menu.g')
def test_build_datasets_with_type_mrna(self, db_mock):
- """Test that correct dataset is returned for a mRNA expression/ Probeset"""
+ """Test that correct dataset is returned for a mRNA
+ expression/ Probeset"""
db_mock.db.execute.return_value.fetchall.return_value = (
(112, "HC_M2_0606_P",
"Hippocampus Consortium M430v2 (Jun06) PDNN"), )
@@ -241,7 +248,8 @@ class TestGenMenu(unittest.TestCase):
def test_build_types(self, db_mock, datasets_mock):
"""Test that correct tissue metadata is returned"""
datasets_mock.return_value = [
- ["112", 'HC_M2_0606_P', "Hippocampus Consortium M430v2 (Jun06) PDNN"]
+ ["112", 'HC_M2_0606_P',
+ "Hippocampus Consortium M430v2 (Jun06) PDNN"]
]
db_mock.db.execute.return_value.fetchall.return_value = (
('Mouse Tissue'), ('Human Tissue'), ('Rat Tissue')
@@ -352,7 +360,6 @@ class TestGenMenu(unittest.TestCase):
'BXD': {'Genotypes': 'Test',
'M': 'Test',
'Phenotypes': 'Test'}}}
- self.maxDiff = None
self.assertEqual(get_datasets(self.test_type),
expected_result)
diff --git a/wqflask/wqflask/api/gen_menu.py b/wqflask/wqflask/api/gen_menu.py
index 82c5d9be..45814ed9 100644
--- a/wqflask/wqflask/api/gen_menu.py
+++ b/wqflask/wqflask/api/gen_menu.py
@@ -1,21 +1,12 @@
from __future__ import print_function, division
-import sys
-
from flask import g
-from utility.tools import locate, locate_ignore_error, TEMPDIR, SQL_URI
-from utility.benchmark import Bench
-
-import MySQLdb
-
-import urlparse
-
-import utility.logger
-logger = utility.logger.getLogger(__name__ )
def gen_dropdown_json():
- """Generates and outputs (as json file) the data for the main dropdown menus on the home page"""
+ """Generates and outputs (as json file) the data for the main dropdown menus on
+ the home page
+ """
species = get_species()
groups = get_groups(species)
@@ -29,9 +20,11 @@ def gen_dropdown_json():
return data
+
def get_species():
"""Build species list"""
- results = g.db.execute("SELECT Name, MenuName FROM Species ORDER BY OrderId").fetchall()
+ results = g.db.execute(
+ "SELECT Name, MenuName FROM Species ORDER BY OrderId").fetchall()
species = []
for result in results:
@@ -39,6 +32,7 @@ def get_species():
return species
+
def get_groups(species):
"""Build groups list"""
groups = {}
@@ -46,18 +40,23 @@ def get_groups(species):
groups[species_name] = []
results = g.db.execute(
- ("SELECT InbredSet.Name, InbredSet.FullName, IFNULL(InbredSet.Family, 'None') " +
- "FROM InbredSet, Species WHERE Species.Name = '{}' AND InbredSet.SpeciesId = " +
- "Species.Id GROUP by InbredSet.Name ORDER BY IFNULL(InbredSet.FamilyOrder, " +
- "InbredSet.FullName) ASC, IFNULL(InbredSet.Family, InbredSet.FullName) ASC, " +
- "InbredSet.FullName ASC, InbredSet.MenuOrderId ASC").format(species_name)).fetchall()
+ ("SELECT InbredSet.Name, InbredSet.FullName, "
+ "IFNULL(InbredSet.Family, 'None') "
+ "FROM InbredSet, Species WHERE Species.Name = '{}' "
+ "AND InbredSet.SpeciesId = Species.Id GROUP by InbredSet.Name "
+ "ORDER BY IFNULL(InbredSet.FamilyOrder, InbredSet.FullName) "
+ "ASC, IFNULL(InbredSet.Family, InbredSet.FullName) ASC, "
+ "InbredSet.FullName ASC, InbredSet.MenuOrderId ASC")
+ .format(species_name)).fetchall()
for result in results:
family_name = "Family:" + str(result[2])
- groups[species_name].append([str(result[0]), str(result[1]), family_name])
+ groups[species_name].append(
+ [str(result[0]), str(result[1]), family_name])
return groups
+
def get_types(groups):
"""Build types list"""
types = {}
@@ -66,12 +65,15 @@ def get_types(groups):
types[species] = {}
for group_name, _group_full_name, _family_name in group_dict:
if phenotypes_exist(group_name):
- types[species][group_name] = [("Phenotypes", "Traits and Cofactors", "Phenotypes")]
+ types[species][group_name] = [
+ ("Phenotypes", "Traits and Cofactors", "Phenotypes")]
if genotypes_exist(group_name):
if group_name in types[species]:
- types[species][group_name] += [("Genotypes", "DNA Markers and SNPs", "Genotypes")]
+ types[species][group_name] += [
+ ("Genotypes", "DNA Markers and SNPs", "Genotypes")]
else:
- types[species][group_name] = [("Genotypes", "DNA Markers and SNPs", "Genotypes")]
+ types[species][group_name] = [
+ ("Genotypes", "DNA Markers and SNPs", "Genotypes")]
if group_name in types[species]:
types_list = build_types(species, group_name)
if len(types_list) > 0:
@@ -82,13 +84,17 @@ def get_types(groups):
types[species][group_name] = types_list
else:
types[species].pop(group_name, None)
- groups[species] = list(group for group in groups[species] if group[0] != group_name)
+ groups[species] = list(
+ group for group in groups[species]
+ if group[0] != group_name)
return types
+
def phenotypes_exist(group_name):
results = g.db.execute(
- ("SELECT Name FROM PublishFreeze " +
- "WHERE PublishFreeze.Name = '{}'").format(group_name+"Publish")).fetchone()
+ ("SELECT Name FROM PublishFreeze "
+ "WHERE PublishFreeze.Name = "
+ "'{}'").format(group_name+"Publish")).fetchone()
return bool(results)
@@ -118,13 +124,15 @@ def build_types(species, group):
results = []
for result in g.db.execute(query).fetchall():
- if len(result):
+ if bool(result):
these_datasets = build_datasets(species, group, result[0])
if len(these_datasets) > 0:
- results.append([str(result[0]), str(result[0]), "Molecular Trait Datasets"])
+ results.append([str(result[0]), str(result[0]),
+ "Molecular Trait Datasets"])
return results
+
def get_datasets(types):
"""Build datasets list"""
datasets = {}
@@ -192,17 +200,18 @@ def build_datasets(species, group, type_name):
dataset_text = "%s Genotypes" % group
datasets.append([dataset_id, dataset_value, dataset_text])
- else: # for mRNA expression/ProbeSet
+ else: # for mRNA expression/ProbeSet
results = g.db.execute(
- ("SELECT ProbeSetFreeze.Id, ProbeSetFreeze.Name, " +
- "ProbeSetFreeze.FullName FROM ProbeSetFreeze, " +
- "ProbeFreeze, InbredSet, Tissue, Species WHERE " +
- "Species.Name = '{0}' AND Species.Id = " +
- "InbredSet.SpeciesId AND InbredSet.Name = '{1}' " +
- "AND ProbeSetFreeze.ProbeFreezeId = ProbeFreeze.Id " +
- "and Tissue.Name = '{2}' AND ProbeFreeze.TissueId = " +
- "Tissue.Id and ProbeFreeze.InbredSetId = InbredSet.Id " +
- "ORDER BY ProbeSetFreeze.CreateTime DESC").format(species, group, type_name)).fetchall()
+ ("SELECT ProbeSetFreeze.Id, ProbeSetFreeze.Name, "
+ "ProbeSetFreeze.FullName FROM ProbeSetFreeze, "
+ "ProbeFreeze, InbredSet, Tissue, Species WHERE "
+ "Species.Name = '{0}' AND Species.Id = "
+ "InbredSet.SpeciesId AND InbredSet.Name = '{1}' "
+ "AND ProbeSetFreeze.ProbeFreezeId = ProbeFreeze.Id "
+ "and Tissue.Name = '{2}' AND ProbeFreeze.TissueId = "
+ "Tissue.Id and ProbeFreeze.InbredSetId = InbredSet.Id "
+ "ORDER BY ProbeSetFreeze.CreateTime "
+ "DESC").format(species, group, type_name)).fetchall()
datasets = []
for dataset_info in results: