aboutsummaryrefslogtreecommitdiff
path: root/gn2/utility/helper_functions.py
diff options
context:
space:
mode:
Diffstat (limited to 'gn2/utility/helper_functions.py')
-rw-r--r--gn2/utility/helper_functions.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/gn2/utility/helper_functions.py b/gn2/utility/helper_functions.py
new file mode 100644
index 00000000..fc101959
--- /dev/null
+++ b/gn2/utility/helper_functions.py
@@ -0,0 +1,69 @@
+from gn2.base import data_set
+from gn2.base.trait import create_trait
+from gn2.base.species import TheSpecies
+
+from gn2.utility import hmac
+from gn2.utility.tools import get_setting
+
+from gn2.wqflask.database import database_connection
+
+
+def get_species_dataset_trait(self, start_vars):
+ if "temp_trait" in list(start_vars.keys()):
+ if start_vars['temp_trait'] == "True":
+ self.dataset = data_set.create_dataset(
+ dataset_name="Temp",
+ dataset_type="Temp",
+ group_name=start_vars['group'])
+ else:
+ self.dataset = data_set.create_dataset(start_vars['dataset'])
+ else:
+ self.dataset = data_set.create_dataset(start_vars['dataset'])
+ self.species = TheSpecies(dataset=self.dataset)
+ self.this_trait = create_trait(dataset=self.dataset,
+ name=start_vars['trait_id'],
+ cellid=None,
+ get_qtl_info=True)
+
+def get_trait_db_obs(self, trait_db_list):
+ if isinstance(trait_db_list, str):
+ trait_db_list = trait_db_list.split(",")
+
+ self.trait_list = []
+ for trait in trait_db_list:
+ data, _separator, hmac_string = trait.rpartition(':')
+ data = data.strip()
+ assert hmac_string == hmac.hmac_creation(data), "Data tampering?"
+ trait_name, dataset_name = data.split(":")[:2]
+ if dataset_name == "Temp":
+ dataset_ob = data_set.create_dataset(
+ dataset_name=dataset_name, dataset_type="Temp",
+ group_name=trait_name.split("_")[2])
+ else:
+ dataset_ob = data_set.create_dataset(dataset_name)
+ trait_ob = create_trait(dataset=dataset_ob,
+ name=trait_name,
+ cellid=None)
+ if trait_ob:
+ self.trait_list.append((trait_ob, dataset_ob))
+
+
+def get_species_groups():
+ """Group each species into a group"""
+ _menu = {}
+ species, group_name = None, None
+ with database_connection(get_setting("SQL_URI")) as conn, conn.cursor() as cursor:
+ cursor.execute(
+ "SELECT s.MenuName, i.InbredSetName FROM InbredSet i "
+ "INNER JOIN Species s ON s.SpeciesId = i.SpeciesId "
+ "ORDER BY i.SpeciesId ASC, i.Name ASC"
+ )
+ for species, group_name in cursor.fetchall():
+ if species in _menu:
+ if _menu.get(species):
+ _menu = _menu[species].append(group_name)
+ else:
+ _menu[species] = [group_name]
+ return [{"species": key,
+ "groups": value} for key, value in
+ list(_menu.items())]