aboutsummaryrefslogtreecommitdiff
path: root/gn3/computations
diff options
context:
space:
mode:
Diffstat (limited to 'gn3/computations')
-rw-r--r--gn3/computations/datasets.py50
1 files changed, 49 insertions, 1 deletions
diff --git a/gn3/computations/datasets.py b/gn3/computations/datasets.py
index 57e1fe1..b69583e 100644
--- a/gn3/computations/datasets.py
+++ b/gn3/computations/datasets.py
@@ -320,4 +320,52 @@ def get_traits_data(sample_ids, database_instance, dataset_name, dataset_type):
# print(query)
_results = fetch_from_db_sample_data(query, database_instance)
- return {}
+
+ return []
+
+
+def get_probeset_trait_data(strain_ids: List, conn, dataset_name) -> dict:
+ """function for getting trait data\
+ for probeset data type similar to\
+ get trait data only difference is that\
+ it uses sub queries"""
+
+ trait_data: dict = {}
+
+ trait_id_name = {}
+
+ traits_query = """
+ SELECT ProbeSetXRef.DataId,ProbeSet.Name FROM (ProbeSet, ProbeSetXRef, ProbeSetFreeze)
+ WHERE ProbeSetXRef.ProbeSetFreezeId = ProbeSetFreeze.Id
+ and ProbeSetFreeze.Name = '{}'
+ and ProbeSet.Id = ProbeSetXRef.ProbeSetId
+ order by ProbeSet.Id
+ """.format(dataset_name)
+
+ query = """
+ SELECT * from ProbeSetData
+ where StrainID in ({})
+ and id in (SELECT ProbeSetXRef.DataId FROM (ProbeSet, ProbeSetXRef, ProbeSetFreeze)
+ WHERE ProbeSetXRef.ProbeSetFreezeId = ProbeSetFreeze.Id
+ and ProbeSetFreeze.Name = '{}'
+ and ProbeSet.Id = ProbeSetXRef.ProbeSetId
+ order by ProbeSet.Id)
+ """.format(",".join(str(strain_id) for strain_id in strain_ids), dataset_name)
+
+ with conn:
+ cursor = conn.cursor()
+ cursor.execute(query)
+ _results = cursor.fetchall()
+ cursor.execute(traits_query)
+ trait_id_name = dict(cursor.fetchall())
+
+ for trait_id, _strain_id, strain_value in _results:
+ trait_name = trait_id_name[trait_id]
+ if trait_data.get(trait_name):
+ trait_data[trait_name].append(strain_value)
+ else:
+ trait_data[trait_name] = []
+
+ trait_data[trait_name].append(strain_value)
+
+ return trait_data