about summary refs log tree commit diff
path: root/wqflask/maintenance/gen_select_dataset.py
diff options
context:
space:
mode:
Diffstat (limited to 'wqflask/maintenance/gen_select_dataset.py')
-rw-r--r--wqflask/maintenance/gen_select_dataset.py296
1 files changed, 0 insertions, 296 deletions
diff --git a/wqflask/maintenance/gen_select_dataset.py b/wqflask/maintenance/gen_select_dataset.py
deleted file mode 100644
index 01b2fc15..00000000
--- a/wqflask/maintenance/gen_select_dataset.py
+++ /dev/null
@@ -1,296 +0,0 @@
-"""Script that generates the data for the main dropdown menus on the home page
-
-Writes out data as /static/new/javascript/dataset_menu_structure.json
-It needs to be run manually when database has been changed. Run it as
-
-  ./bin/genenetwork2 ~/my_settings.py -c ./wqflask/maintenance/gen_select_dataset.py
-
-"""
-
-
-# Copyright (C) University of Tennessee Health Science Center, Memphis, TN.
-#
-# This program is free software: you can redistribute it and/or modify it
-# under the terms of the GNU Affero General Public License
-# as published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the GNU Affero General Public License for more details.
-#
-# This program is available from Source Forge: at GeneNetwork Project
-# (sourceforge.net/projects/genenetwork/).
-#
-# Contact Drs. Robert W. Williams
-# at rwilliams@uthsc.edu
-#
-#
-#
-# This module is used by GeneNetwork project (www.genenetwork.org)
-
-import sys
-
-# NEW: Note we prepend the current path - otherwise a guix instance of GN2 may be used instead
-sys.path.insert(0, './')
-# NEW: import app to avoid a circular dependency on utility.tools
-from wqflask import app
-
-from utility.tools import get_setting
-
-import simplejson as json
-import urllib.parse
-
-
-from pprint import pformat as pf
-
-from wqflask.database import database_connection
-
-
-def get_species(cursor):
-    """Build species list"""
-    #cursor.execute("select Name, MenuName from Species where Species.Name != 'macaque monkey' order by OrderId")
-    cursor.execute("select Name, MenuName from Species order by OrderId")
-    species = list(cursor.fetchall())
-    return species
-
-
-def get_groups(cursor, species):
-    """Build groups list"""
-    groups = {}
-    for species_name, _species_full_name in species:
-        cursor.execute("""select InbredSet.Name, InbredSet.FullName from InbredSet,
-                       Species,
-                       ProbeFreeze, GenoFreeze, PublishFreeze where Species.Name = '%s'
-                       and InbredSet.SpeciesId = Species.Id and
-                       (PublishFreeze.InbredSetId = InbredSet.Id
-                        or GenoFreeze.InbredSetId = InbredSet.Id
-                        or ProbeFreeze.InbredSetId = InbredSet.Id)
-                        group by InbredSet.Name
-                        order by InbredSet.FullName""" % species_name)
-        results = cursor.fetchall()
-        groups[species_name] = list(results)
-    return groups
-
-
-def get_types(groups):
-    """Build types list"""
-    types = {}
-    #print("Groups: ", pf(groups))
-    for species, group_dict in list(groups.items()):
-        types[species] = {}
-        for group_name, _group_full_name in group_dict:
-            # make group an alias to shorten the code
-            #types[species][group_name] = [("Phenotypes", "Phenotypes"), ("Genotypes", "Genotypes")]
-            if phenotypes_exist(group_name):
-                types[species][group_name] = [("Phenotypes", "Phenotypes")]
-            if genotypes_exist(group_name):
-                if group_name in types[species]:
-                    types[species][group_name] += [("Genotypes", "Genotypes")]
-                else:
-                    types[species][group_name] = [("Genotypes", "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] = tuple(
-                            group for group in groups[species] if group[0] != group_name)
-            else:  # ZS: This whole else statement might be unnecessary, need to check
-                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] = tuple(
-                        group for group in groups[species] if group[0] != group_name)
-    return types
-
-
-def phenotypes_exist(group_name):
-    #print("group_name:", group_name)
-    Cursor.execute("""select Name from PublishFreeze
-                      where PublishFreeze.Name = '%s'""" % (group_name + "Publish"))
-
-    results = Cursor.fetchone()
-    #print("RESULTS:", results)
-
-    if results != None:
-        return True
-    else:
-        return False
-
-
-def genotypes_exist(group_name):
-    #print("group_name:", group_name)
-    Cursor.execute("""select Name from GenoFreeze
-                      where GenoFreeze.Name = '%s'""" % (group_name + "Geno"))
-
-    results = Cursor.fetchone()
-    #print("RESULTS:", results)
-
-    if results != None:
-        return True
-    else:
-        return False
-
-
-def build_types(species, group):
-    """Fetches tissues
-
-    Gets the tissues with data for this species/group
-    (all types except phenotype/genotype are tissues)
-
-    """
-
-    Cursor.execute("""select distinct Tissue.Name
-                       from ProbeFreeze, ProbeSetFreeze, InbredSet, Tissue, Species
-                       where Species.Name = '%s' and Species.Id = InbredSet.SpeciesId and
-                       InbredSet.Name = '%s' and
-                       ProbeFreeze.TissueId = Tissue.Id and
-                       ProbeFreeze.InbredSetId = InbredSet.Id and
-                       ProbeSetFreeze.ProbeFreezeId = ProbeFreeze.Id and
-                       ProbeSetFreeze.public > 0 and
-                       ProbeSetFreeze.confidentiality < 1
-                       order by Tissue.Name""" % (species, group))
-
-    results = []
-    for result in Cursor.fetchall():
-        if len(result):
-            these_datasets = build_datasets(species, group, result[0])
-            if len(these_datasets) > 0:
-                results.append((result[0], result[0]))
-
-    return results
-
-
-def get_datasets(types):
-    """Build datasets list"""
-    datasets = {}
-    for species, group_dict in list(types.items()):
-        datasets[species] = {}
-        for group, type_list in list(group_dict.items()):
-            datasets[species][group] = {}
-            for type_name in type_list:
-                these_datasets = build_datasets(species, group, type_name[0])
-                if len(these_datasets) > 0:
-                    datasets[species][group][type_name[0]] = these_datasets
-
-    return datasets
-
-
-def build_datasets(species, group, type_name):
-    """Gets dataset names from database"""
-    dataset_text = dataset_value = None
-    datasets = []
-    if type_name == "Phenotypes":
-        Cursor.execute("""select InfoFiles.GN_AccesionId, PublishFreeze.Name, PublishFreeze.FullName from InfoFiles, PublishFreeze, InbredSet where
-                    InbredSet.Name = '%s' and
-                    PublishFreeze.InbredSetId = InbredSet.Id and
-                    InfoFiles.InfoPageName = PublishFreeze.Name order by
-                    PublishFreeze.CreateTime asc""" % group)
-
-        results = Cursor.fetchall()
-        if len(results) > 0:
-            for result in results:
-                print(result)
-                dataset_id = str(result[0])
-                dataset_value = str(result[1])
-                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:
-            dataset_id = "None"
-            dataset_value = "%sPublish" % group
-            dataset_text = "%s Phenotypes" % group
-            datasets.append((dataset_id, dataset_value, dataset_text))
-
-    elif type_name == "Genotypes":
-        Cursor.execute("""select InfoFiles.GN_AccesionId from InfoFiles, GenoFreeze, InbredSet where
-                    InbredSet.Name = '%s' and
-                    GenoFreeze.InbredSetId = InbredSet.Id and
-                    InfoFiles.InfoPageName = GenoFreeze.ShortName and
-                    GenoFreeze.public > 0 and
-                    GenoFreeze.confidentiality < 1 order by
-                    GenoFreeze.CreateTime desc""" % group)
-
-        results = Cursor.fetchone()
-        if results != None:
-            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
-        Cursor.execute("""select ProbeSetFreeze.Id, ProbeSetFreeze.Name, ProbeSetFreeze.FullName from
-                    ProbeSetFreeze, ProbeFreeze, InbredSet, Tissue, Species where
-                    Species.Name = '%s' and Species.Id = InbredSet.SpeciesId and
-                    InbredSet.Name = '%s' and
-                    ProbeSetFreeze.ProbeFreezeId = ProbeFreeze.Id and Tissue.Name = '%s' and
-                    ProbeFreeze.TissueId = Tissue.Id and ProbeFreeze.InbredSetId = InbredSet.Id and
-                    ProbeSetFreeze.confidentiality < 1 and ProbeSetFreeze.public > 0 order by
-                    ProbeSetFreeze.CreateTime desc""" % (species, group, type_name))
-
-        dataset_results = Cursor.fetchall()
-        datasets = []
-        for dataset_info in dataset_results:
-            this_dataset_info = []
-            for info in dataset_info:
-                this_dataset_info.append(str(info))
-            datasets.append(this_dataset_info)
-
-    return datasets
-
-
-def main(cursor):
-    """Generates and outputs (as json file) the data for the main dropdown menus on the home page"""
-
-    species = get_species(cursor)
-    groups = get_groups(cursor, species)
-    types = get_types(groups)
-    datasets = get_datasets(types)
-
-    #species.append(('All Species', 'All Species'))
-    #groups['All Species'] = [('All Groups', 'All Groups')]
-    #types['All Species'] = {}
-    #types['All Species']['All Groups'] = [('Phenotypes', 'Phenotypes')]
-    #datasets['All Species'] = {}
-    #datasets['All Species']['All Groups'] = {}
-    #datasets['All Species']['All Groups']['Phenotypes'] = [('All Phenotypes','All Phenotypes')]
-
-    data = dict(species=species,
-                groups=groups,
-                types=types,
-                datasets=datasets,
-                )
-
-    #print("data:", data)
-
-    output_file = """./wqflask/static/new/javascript/dataset_menu_structure.json"""
-
-    with open(output_file, 'w') as fh:
-        json.dump(data, fh, indent="   ", sort_keys=True)
-
-    #print("\nWrote file to:", output_file)
-
-
-def _test_it():
-    """Used for internal testing only"""
-    types = build_types("Mouse", "BXD")
-    #print("build_types:", pf(types))
-    datasets = build_datasets("Mouse", "BXD", "Hippocampus")
-    #print("build_datasets:", pf(datasets))
-
-
-if __name__ == '__main__':
-    with database_connection(get_setting("SQL_URI")) as conn:
-        with conn.cursor() as cursor:
-            main(cursor)