aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzsloan2020-08-04 12:41:58 -0500
committerzsloan2020-08-04 12:41:58 -0500
commit84cbf35adbb15c79638372d108308edb05f12683 (patch)
treecd2f856e885a212fc35eb59f07895ea25f4f8285
parentdb0f9ebcb3b9bed2f8dfe2f9a2370dc1a86204b3 (diff)
parent49e6ee926076a2ca71372ae9cb585130f3790f69 (diff)
downloadgenenetwork2-84cbf35adbb15c79638372d108308edb05f12683.tar.gz
Merge branch 'testing' of github.com:genenetwork/genenetwork2 into testing
-rw-r--r--wqflask/tests/api/__init__.py0
-rw-r--r--wqflask/tests/api/test_gen_menu.py407
-rw-r--r--wqflask/wqflask/api/gen_menu.py186
3 files changed, 500 insertions, 93 deletions
diff --git a/wqflask/tests/api/__init__.py b/wqflask/tests/api/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/wqflask/tests/api/__init__.py
diff --git a/wqflask/tests/api/test_gen_menu.py b/wqflask/tests/api/test_gen_menu.py
new file mode 100644
index 00000000..79c77fec
--- /dev/null
+++ b/wqflask/tests/api/test_gen_menu.py
@@ -0,0 +1,407 @@
+"""Test cases for wqflask.api.gen_menu"""
+import unittest
+import mock
+
+from wqflask.api.gen_menu import gen_dropdown_json
+from wqflask.api.gen_menu import get_species
+from wqflask.api.gen_menu import get_groups
+from wqflask.api.gen_menu import get_types
+from wqflask.api.gen_menu import get_datasets
+from wqflask.api.gen_menu import phenotypes_exist
+from wqflask.api.gen_menu import genotypes_exist
+from wqflask.api.gen_menu import build_datasets
+from wqflask.api.gen_menu import build_types
+
+
+class TestGenMenu(unittest.TestCase):
+ """Tests for the gen_menu module"""
+
+ def setUp(self):
+ self.test_group = {
+ 'mouse': [
+ ['H_T1',
+ 'H_T',
+ 'Family:DescriptionA'
+ ],
+ ['H_T2', "H_T'", 'Family:None']
+ ],
+ 'human': [
+ ['BXD', 'BXD', 'Family:None'],
+ ['HLC', 'Liver: Normal Gene Expression with Genotypes (Merck)',
+ 'Family:Test']
+ ]
+ }
+
+ self.test_type = {
+ 'mouse': {
+ 'H_T2': [('Phenotypes',
+ 'Traits and Cofactors',
+ 'Phenotypes'),
+ ('Genotypes',
+ 'DNA Markers and SNPs',
+ 'Genotypes'),
+ ['M', 'M', 'Molecular Trait Datasets']],
+ 'H_T1': [('Phenotypes',
+ 'Traits and Cofactors',
+ 'Phenotypes'),
+ ('Genotypes',
+ 'DNA Markers and SNPs',
+ 'Genotypes'),
+ ['M', 'M', 'Molecular Trait Datasets']]
+ },
+ 'human': {
+ 'HLC': [('Phenotypes',
+ 'Traits and Cofactors',
+ 'Phenotypes'),
+ ('Genotypes',
+ 'DNA Markers and SNPs',
+ 'Genotypes'),
+ ['M', 'M', 'Molecular Trait Datasets']],
+ 'BXD': [('Phenotypes',
+ 'Traits and Cofactors',
+ 'Phenotypes'),
+ ('Genotypes',
+ 'DNA Markers and SNPs',
+ 'Genotypes'),
+ ['M', 'M', 'Molecular Trait Datasets']]
+ }
+ }
+
+ @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'))
+ self.assertEqual(get_species(),
+ [['human', 'Human'], ['mouse', 'Mouse']])
+ db_mock.db.execute.assert_called_once_with(
+ "SELECT Name, MenuName FROM Species ORDER BY OrderId"
+ )
+
+ @mock.patch('wqflask.api.gen_menu.g')
+ def test_get_groups(self, db_mock):
+ """Test that species groups are grouped correctly"""
+ db_mock.db.execute.return_value.fetchall.side_effect = [
+ # Mouse
+ (('BXD', 'BXD', None),
+ ('HLC', 'Liver: Normal Gene Expression with Genotypes (Merck)',
+ 'Test')),
+ # Human
+ (('H_T1', "H_T", "DescriptionA"),
+ ('H_T2', "H_T'", None))
+ ]
+
+ self.assertEqual(get_groups([["human", "Human"], ["mouse", "Mouse"]]),
+ self.test_group)
+
+ for name in ["mouse", "human"]:
+ db_mock.db.execute.assert_any_call(
+ ("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(name)
+ )
+
+ @mock.patch('wqflask.api.gen_menu.g')
+ def test_phenotypes_exist_called_with_correct_query(self, db_mock):
+ """Test that phenotypes_exist is called with the correct query"""
+ 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'"
+ )
+
+ @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"""
+ for x in [None, False, (), [], ""]:
+ db_mock.db.execute.return_value.fetchone.return_value = x
+ self.assertFalse(phenotypes_exist("test"))
+
+ @mock.patch('wqflask.api.gen_menu.g')
+ def test_phenotypes_exist_with_truthy_value(self, db_mock):
+ """Test that phenotype check returns correctly when given Truthy """
+ for x in ["x", ("result"), ["result"], [1]]:
+ db_mock.db.execute.return_value.fetchone.return_value = (x)
+ self.assertTrue(phenotypes_exist("test"))
+
+ @mock.patch('wqflask.api.gen_menu.g')
+ def test_genotypes_exist_called_with_correct_query(self, db_mock):
+ """Test that genotypes_exist is called with the correct query"""
+ db_mock.db.execute.return_value.fetchone.return_value = None
+ genotypes_exist("test")
+ db_mock.db.execute.assert_called_with(
+ "SELECT Name FROM GenoFreeze WHERE GenoFreeze.Name = 'testGeno'"
+ )
+
+ @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"""
+ for x in [None, False, (), [], ""]:
+ db_mock.db.execute.return_value.fetchone.return_value = x
+ self.assertFalse(genotypes_exist("test"))
+
+ @mock.patch('wqflask.api.gen_menu.g')
+ def test_genotypes_exist_with_truthy_value(self, db_mock):
+ """Test that genotype check returns correctly when given Truthy """
+ for x in ["x", ("result"), ["result"], [1]]:
+ 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"""
+ db_mock.db.execute.return_value.fetchall.return_value = (
+ (602, "BXDPublish", "BXD Published Phenotypes"),
+ )
+ self.assertEqual(build_datasets("Mouse", "BXD", "Phenotypes"),
+ [['602', "BXDPublish", "BXD Published Phenotypes"]])
+ db_mock.db.execute.assert_called_with(
+ "SELECT InfoFiles.GN_AccesionId, PublishFreeze.Name, " +
+ "PublishFreeze.FullName FROM InfoFiles, PublishFreeze, " +
+ "InbredSet WHERE InbredSet.Name = 'BXD' AND " +
+ "PublishFreeze.InbredSetId = InbredSet.Id AND " +
+ "InfoFiles.InfoPageName = PublishFreeze.Name " +
+ "ORDER BY PublishFreeze.CreateTime ASC"
+ )
+ self.assertEqual(build_datasets("Mouse", "MDP", "Phenotypes"),
+ [['602', "BXDPublish", "Mouse Phenome Database"]])
+
+ db_mock.db.execute.return_value.fetchall.return_value = ()
+ db_mock.db.execute.return_value.fetchone.return_value = (
+ "BXDPublish", "Mouse Phenome Database"
+ )
+ self.assertEqual(build_datasets("Mouse", "MDP", "Phenotypes"),
+ [["None", "BXDPublish", "Mouse Phenome Database"]])
+
+ @mock.patch('wqflask.api.gen_menu.g')
+ def test_build_datasets_with_type_phenotypes_and_no_results(self, db_mock):
+ """Test that correct dataset is returned for a phenotype type with no
+ results
+
+ """
+ db_mock.db.execute.return_value.fetchall.return_value = None
+ db_mock.db.execute.return_value.fetchone.return_value = (121,
+ "text value")
+ self.assertEqual(build_datasets("Mouse", "BXD", "Phenotypes"),
+ [["None", "121", "text value"]])
+ db_mock.db.execute.assert_called_with(
+ "SELECT PublishFreeze.Name, PublishFreeze.FullName "
+ "FROM PublishFreeze, InbredSet "
+ "WHERE InbredSet.Name = 'BXD' AND "
+ "PublishFreeze.InbredSetId = InbredSet.Id "
+ "ORDER BY PublishFreeze.CreateTime ASC"
+ )
+
+ @mock.patch('wqflask.api.gen_menu.g')
+ def test_build_datasets_with_type_genotypes(self, db_mock):
+ """Test that correct dataset is returned for a phenotype type"""
+ db_mock.db.execute.return_value.fetchone.return_value = (
+ 635, "HLCPublish", "HLC Published Genotypes"
+ )
+
+ 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 "
+ "InfoFiles.InfoPageName = GenoFreeze.ShortName " +
+ "ORDER BY GenoFreeze.CreateTime DESC"
+ )
+ db_mock.db.execute.return_value.fetchone.return_value = ()
+ self.assertEqual(build_datasets("Mouse", "HLC", "Genotypes"),
+ [["None", "HLCGeno", "HLC Genotypes"]])
+
+ @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"""
+ db_mock.db.execute.return_value.fetchall.return_value = (
+ (112, "HC_M2_0606_P",
+ "Hippocampus Consortium M430v2 (Jun06) PDNN"), )
+ self.assertEqual(build_datasets("Mouse", "HLC", "mRNA"), [[
+ "112", 'HC_M2_0606_P', "Hippocampus Consortium M430v2 (Jun06) PDNN"
+ ]])
+ db_mock.db.execute.assert_called_once_with(
+ "SELECT ProbeSetFreeze.Id, ProbeSetFreeze.Name, " +
+ "ProbeSetFreeze.FullName FROM ProbeSetFreeze, " +
+ "ProbeFreeze, InbredSet, Tissue, Species WHERE " +
+ "Species.Name = 'Mouse' AND Species.Id = " +
+ "InbredSet.SpeciesId AND InbredSet.Name = 'HLC' AND " +
+ "ProbeSetFreeze.ProbeFreezeId = ProbeFreeze.Id and " +
+ "Tissue.Name = 'mRNA' AND ProbeFreeze.TissueId = " +
+ "Tissue.Id and ProbeFreeze.InbredSetId = InbredSet.Id " +
+ "ORDER BY ProbeSetFreeze.CreateTime DESC")
+
+ @mock.patch('wqflask.api.gen_menu.build_datasets')
+ @mock.patch('wqflask.api.gen_menu.g')
+ 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"]
+ ]
+ db_mock.db.execute.return_value.fetchall.return_value = (
+ ('Mouse Tissue'), ('Human Tissue'), ('Rat Tissue')
+ )
+ self.assertEqual(build_types('mouse', 'random group'),
+ [['M', 'M', 'Molecular Trait Datasets'],
+ ['H', 'H', 'Molecular Trait Datasets'],
+ ['R', 'R', 'Molecular Trait Datasets']])
+ db_mock.db.execute.assert_called_once_with(
+ "SELECT DISTINCT Tissue.Name " +
+ "FROM ProbeFreeze, ProbeSetFreeze, InbredSet, " +
+ "Tissue, Species WHERE Species.Name = 'mouse' " +
+ "AND Species.Id = InbredSet.SpeciesId AND " +
+ "InbredSet.Name = 'random group' AND " +
+ "ProbeFreeze.TissueId = Tissue.Id AND " +
+ "ProbeFreeze.InbredSetId = InbredSet.Id AND " +
+ "ProbeSetFreeze.ProbeFreezeId = ProbeFreeze.Id " +
+ "ORDER BY Tissue.Name"
+ )
+
+ @mock.patch('wqflask.api.gen_menu.build_types')
+ @mock.patch('wqflask.api.gen_menu.genotypes_exist')
+ @mock.patch('wqflask.api.gen_menu.phenotypes_exist')
+ def test_get_types_with_existing_genotype_and_phenotypes(
+ self,
+ phenotypes_exist_mock,
+ genotypes_exist_mock,
+ build_types_mock):
+ """Test that build types are constructed correctly if phenotypes and genotypes
+ exist
+
+ """
+ phenotypes_exist_mock.return_value = True
+ genotypes_exist_mock.return_value = True
+
+ expected_result = self.test_type
+
+ build_types_mock.return_value = [
+ ['M', 'M', 'Molecular Trait Datasets']
+ ]
+ self.assertEqual(get_types(self.test_group), expected_result)
+
+ @mock.patch('wqflask.api.gen_menu.build_types')
+ @mock.patch('wqflask.api.gen_menu.genotypes_exist')
+ @mock.patch('wqflask.api.gen_menu.phenotypes_exist')
+ def test_get_types_with_buildtype_and_non_existent_genotype_and_phenotypes(
+ self,
+ phenotypes_exist_mock,
+ genotypes_exist_mock,
+ build_types_mock):
+ """Test that build types are constructed correctly if phenotypes_exist and
+ genotypes_exist are false but build_type is falsy
+
+ """
+ phenotypes_exist_mock.return_value = False
+ genotypes_exist_mock.return_value = False
+
+ build_types_mock.return_value = []
+ self.assertEqual(get_types(self.test_group), {
+ 'mouse': {},
+ 'human': {}
+ })
+
+ @mock.patch('wqflask.api.gen_menu.build_types')
+ @mock.patch('wqflask.api.gen_menu.genotypes_exist')
+ @mock.patch('wqflask.api.gen_menu.phenotypes_exist')
+ def test_get_types_with_non_existent_genotype_phenotypes_and_buildtype(
+ self,
+ phenotypes_exist_mock,
+ genotypes_exist_mock,
+ build_types_mock):
+ """Test that build types are constructed correctly if phenotypes_exist,
+ genotypes_exist and build_types are truthy
+
+ """
+ phenotypes_exist_mock.return_value = False
+ genotypes_exist_mock.return_value = False
+
+ build_types_mock.return_value = [
+ ['M', 'M', 'Molecular Trait Datasets']
+ ]
+ expected_result = {
+ 'mouse': {
+ 'H_T2': [['M', 'M', 'Molecular Trait Datasets']],
+ 'H_T1': [['M', 'M', 'Molecular Trait Datasets']]},
+ 'human': {
+ 'HLC': [['M', 'M', 'Molecular Trait Datasets']],
+ 'BXD': [['M', 'M', 'Molecular Trait Datasets']]}}
+ self.assertEqual(get_types(self.test_group),
+ expected_result)
+
+ @mock.patch('wqflask.api.gen_menu.build_datasets')
+ def test_get_datasets_with_existent_datasets(self,
+ build_datasets_mock):
+ """Test correct dataset is returned with existent build_datasets"""
+ build_datasets_mock.return_value = "Test"
+ expected_result = {
+ 'mouse': {
+ 'H_T2': {'Genotypes': 'Test',
+ 'M': 'Test',
+ 'Phenotypes': 'Test'},
+ 'H_T1': {'Genotypes': 'Test',
+ 'M': 'Test',
+ 'Phenotypes': 'Test'}},
+ 'human': {'HLC': {'Genotypes': 'Test',
+ 'M': 'Test',
+ 'Phenotypes': 'Test'},
+ 'BXD': {'Genotypes': 'Test',
+ 'M': 'Test',
+ 'Phenotypes': 'Test'}}}
+ self.assertEqual(get_datasets(self.test_type),
+ expected_result)
+
+ @mock.patch('wqflask.api.gen_menu.build_datasets')
+ def test_get_datasets_with_non_existent_datasets(self,
+ build_datasets_mock):
+ """Test correct dataset is returned with non-existent build_datasets"""
+ build_datasets_mock.return_value = None
+ expected_result = {
+ 'mouse': {
+ 'H_T2': {},
+ 'H_T1': {}},
+ 'human': {'HLC': {},
+ 'BXD': {}}}
+ self.assertEqual(get_datasets(self.test_type),
+ expected_result)
+
+ @mock.patch('wqflask.api.gen_menu.get_datasets')
+ @mock.patch('wqflask.api.gen_menu.get_types')
+ @mock.patch('wqflask.api.gen_menu.get_groups')
+ @mock.patch('wqflask.api.gen_menu.get_species')
+ def test_gen_dropdown_json(self,
+ species_mock,
+ groups_mock,
+ types_mock,
+ datasets_mock):
+ "Test that the correct dictionary is constructed properly"
+ species_mock.return_value = ("speciesA speciesB speciesC speciesD"
+ .split(" "))
+ datasets_mock.return_value = ("datasetA datasetB datasetC datasetD"
+ .split(" "))
+ groups_mock.return_value = ("groupA groupB groupC groupD"
+ .split(" "))
+ types_mock.return_value = ("typeA typeB typeC typeD"
+ .split(" "))
+ datasets_mock.return_value = ("datasetA datasetB datasetC datasetD"
+ .split(" "))
+
+ expected_result = {
+ 'datasets': ['datasetA', 'datasetB', 'datasetC', 'datasetD'],
+ 'types': ['typeA', 'typeB', 'typeC', 'typeD'],
+ 'groups': ['groupA', 'groupB', 'groupC', 'groupD'],
+ 'species': ['speciesA', 'speciesB', 'speciesC', 'speciesD']}
+
+ self.assertEqual(gen_dropdown_json(), expected_result)
diff --git a/wqflask/wqflask/api/gen_menu.py b/wqflask/wqflask/api/gen_menu.py
index cfce0c8e..cc11e14b 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,11 +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:
@@ -41,25 +32,31 @@ def get_species():
return species
+
def get_groups(species):
"""Build groups list"""
groups = {}
for species_name, _species_full_name in 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()
+ 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()
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 = {}
@@ -68,48 +65,45 @@ 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:
types[species][group_name] += types_list
- else:
- if not phenotypes_exist(group_name) and not genotypes_exist(group_name):
- types[species].pop(group_name, None)
- groups[species] = list(group for group in groups[species] if group[0] != group_name)
- else: #ZS: This whole else statement might be unnecessary, need to check
+ else:
types_list = build_types(species, group_name)
if len(types_list) > 0:
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()
+ results = g.db.execute(
+ ("SELECT Name FROM PublishFreeze "
+ "WHERE PublishFreeze.Name = "
+ "'{}'").format(group_name+"Publish")).fetchone()
+ return bool(results)
- if results != None:
- return True
- else:
- return False
def genotypes_exist(group_name):
- results = g.db.execute("""SELECT Name
- FROM GenoFreeze
- WHERE GenoFreeze.Name = '{}'""".format(group_name+"Geno")).fetchone()
+ results = g.db.execute(
+ ("SELECT Name FROM GenoFreeze " +
+ "WHERE GenoFreeze.Name = '{}'").format(group_name+"Geno")).fetchone()
+ return bool(results)
- if results != None:
- return True
- else:
- return False
def build_types(species, group):
"""Fetches tissues
@@ -119,25 +113,26 @@ def build_types(species, group):
"""
- query = """SELECT DISTINCT Tissue.Name
- FROM ProbeFreeze, ProbeSetFreeze, InbredSet, Tissue, Species
- WHERE Species.Name = '{0}' AND
- Species.Id = InbredSet.SpeciesId AND
- InbredSet.Name = '{1}' AND
- ProbeFreeze.TissueId = Tissue.Id AND
- ProbeFreeze.InbredSetId = InbredSet.Id AND
- ProbeSetFreeze.ProbeFreezeId = ProbeFreeze.Id
- ORDER BY Tissue.Name""".format(species, group)
+ query = ("SELECT DISTINCT Tissue.Name "
+ "FROM ProbeFreeze, ProbeSetFreeze, InbredSet, "
+ "Tissue, Species WHERE Species.Name = '{0}' "
+ "AND Species.Id = InbredSet.SpeciesId AND "
+ "InbredSet.Name = '{1}' AND ProbeFreeze.TissueId = "
+ "Tissue.Id AND ProbeFreeze.InbredSetId = InbredSet.Id "
+ "AND ProbeSetFreeze.ProbeFreezeId = ProbeFreeze.Id "
+ "ORDER BY Tissue.Name").format(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 = {}
@@ -147,7 +142,7 @@ def get_datasets(types):
datasets[species][group] = {}
for type_name in type_list:
these_datasets = build_datasets(species, group, type_name[0])
- if len(these_datasets) > 0:
+ if bool(these_datasets):
datasets[species][group][type_name[0]] = these_datasets
return datasets
@@ -158,29 +153,30 @@ def build_datasets(species, group, type_name):
dataset_text = dataset_value = None
datasets = []
if type_name == "Phenotypes":
- results = g.db.execute("""SELECT InfoFiles.GN_AccesionId, PublishFreeze.Name, PublishFreeze.FullName
- FROM InfoFiles, PublishFreeze, InbredSet
- WHERE InbredSet.Name = '{}' AND
- PublishFreeze.InbredSetId = InbredSet.Id AND
- InfoFiles.InfoPageName = PublishFreeze.Name
- ORDER BY PublishFreeze.CreateTime ASC""".format(group)).fetchall()
-
- if len(results) > 0:
+ results = g.db.execute(
+ ("SELECT InfoFiles.GN_AccesionId, PublishFreeze.Name, "
+ "PublishFreeze.FullName FROM InfoFiles, PublishFreeze, "
+ "InbredSet WHERE InbredSet.Name = '{}' AND "
+ "PublishFreeze.InbredSetId = InbredSet.Id AND "
+ "InfoFiles.InfoPageName = PublishFreeze.Name "
+ "ORDER BY PublishFreeze.CreateTime ASC").format(group)).fetchall()
+ if bool(results):
for result in results:
dataset_id = str(result[0])
dataset_value = str(result[1])
+ dataset_text = str(result[2])
if group == 'MDP':
dataset_text = "Mouse Phenome Database"
- else:
- #dataset_text = "%s Phenotypes" % group
- dataset_text = str(result[2])
+
datasets.append([dataset_id, dataset_value, dataset_text])
else:
- result = g.db.execute("""SELECT PublishFreeze.Name, PublishFreeze.FullName
- FROM PublishFreeze, InbredSet
- WHERE InbredSet.Name = '{}' AND
- PublishFreeze.InbredSetId = InbredSet.Id
- ORDER BY PublishFreeze.CreateTime ASC""".format(group)).fetchone()
+ result = g.db.execute(
+ ("SELECT PublishFreeze.Name, PublishFreeze.FullName "
+ "FROM PublishFreeze, InbredSet "
+ "WHERE InbredSet.Name = '{}' AND "
+ "PublishFreeze.InbredSetId = InbredSet.Id "
+ "ORDER BY PublishFreeze.CreateTime ASC")
+ .format(group)).fetchone()
dataset_id = "None"
dataset_value = str(result[0])
@@ -188,30 +184,34 @@ def build_datasets(species, group, type_name):
datasets.append([dataset_id, dataset_value, dataset_text])
elif type_name == "Genotypes":
- results = g.db.execute("""SELECT InfoFiles.GN_AccesionId
- FROM InfoFiles, GenoFreeze, InbredSet
- WHERE InbredSet.Name = '{}' AND
- GenoFreeze.InbredSetId = InbredSet.Id AND
- InfoFiles.InfoPageName = GenoFreeze.ShortName
- ORDER BY GenoFreeze.CreateTime DESC""".format(group)).fetchone()
-
- if results != None:
+ results = g.db.execute(
+ ("SELECT InfoFiles.GN_AccesionId " +
+ "FROM InfoFiles, GenoFreeze, InbredSet " +
+ "WHERE InbredSet.Name = '{}' AND " +
+ "GenoFreeze.InbredSetId = InbredSet.Id AND " +
+ "InfoFiles.InfoPageName = GenoFreeze.ShortName " +
+ "ORDER BY GenoFreeze.CreateTime DESC").format(group)).fetchone()
+
+ dataset_id = "None"
+ if bool(results):
dataset_id = str(results[0])
- else:
- dataset_id = "None"
+
dataset_value = "%sGeno" % group
dataset_text = "%s Genotypes" % group
datasets.append([dataset_id, dataset_value, dataset_text])
- 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()
+ 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()
datasets = []
for dataset_info in results:
@@ -220,4 +220,4 @@ def build_datasets(species, group, type_name):
this_dataset_info.append(str(info))
datasets.append(this_dataset_info)
- return datasets \ No newline at end of file
+ return datasets