aboutsummaryrefslogtreecommitdiff
path: root/gn3/computations
diff options
context:
space:
mode:
authorAlexander Kabui2021-03-30 23:58:02 +0300
committerAlexander Kabui2021-03-30 23:58:02 +0300
commitb88d63ac06f157a97cc88bee0ea702949a5a0c64 (patch)
tree60ad4156c27c2a2801c291bc5ed9d29a048e2ba5 /gn3/computations
parent31d9aeb1bf4686500406a809d0c5fa4b629125b0 (diff)
downloadgenenetwork3-b88d63ac06f157a97cc88bee0ea702949a5a0c64.tar.gz
refactor retrieve trait sample data and tests
Diffstat (limited to 'gn3/computations')
-rw-r--r--gn3/computations/datasets.py62
1 files changed, 53 insertions, 9 deletions
diff --git a/gn3/computations/datasets.py b/gn3/computations/datasets.py
index 92a7bdf..6df5777 100644
--- a/gn3/computations/datasets.py
+++ b/gn3/computations/datasets.py
@@ -5,24 +5,30 @@ from typing import Optional
from typing import List
-def retrieve_trait_sample_data(dataset_id, dataset_type: str, trait_name: str) -> List:
+def retrieve_trait_sample_data(dataset,
+ trait_name: str,
+ group_species_id=None,) -> List:
"""given the dataset id and trait_name fetch the\
sample_name,value from the dataset"""
# should pass the db as arg all do a setup
- _func_args = (dataset_id, dataset_type, trait_name)
+ (dataset_name, dataset_id, dataset_type) = (dataset.get("name"), dataset.get(
+ "id"), dataset.get("type"))
+
dataset_query = get_query_for_dataset_sample(dataset_type)
+ results = []
+ sample_query_values = {
+ "Publish": (trait_name, dataset_id),
+ "Geno": (group_species_id, trait_name, dataset_name),
+ "ProbeSet": (trait_name, dataset_name)
+ }
if dataset_query:
- if dataset_type == "Publish":
- formatted_query = dataset_query % (trait_name, dataset_id)
- results = fetch_from_db_sample_data(formatted_query, mock.Mock())
- return results
-
- return []
+ formatted_query = dataset_query % sample_query_values[dataset_type]
+ results = fetch_from_db_sample_data(formatted_query, mock.Mock())
- return []
+ return results
def fetch_from_db_sample_data(formatted_query: str, database_instance) -> List:
@@ -60,7 +66,45 @@ def get_query_for_dataset_sample(dataset_type) -> Optional[str]:
Order BY
Strain.Name
"""
+ geno_query = """
+ SELECT
+ Strain.Name, GenoData.value, GenoSE.error, "N/A", Strain.Name2
+ FROM
+ (GenoData, GenoFreeze, Strain, Geno, GenoXRef)
+ left join GenoSE on
+ (GenoSE.DataId = GenoData.Id AND GenoSE.StrainId = GenoData.StrainId)
+ WHERE
+ Geno.SpeciesId = %s AND Geno.Name = %s AND GenoXRef.GenoId = Geno.Id AND
+ GenoXRef.GenoFreezeId = GenoFreeze.Id AND
+ GenoFreeze.Name = %s AND
+ GenoXRef.DataId = GenoData.Id AND
+ GenoData.StrainId = Strain.Id
+ Order BY
+ Strain.Name
+ """
+
+ probeset_query = """
+ SELECT
+ Strain.Name, ProbeSetData.value, ProbeSetSE.error, NStrain.count, Strain.Name2
+ FROM
+ (ProbeSetData, ProbeSetFreeze, Strain, ProbeSet, ProbeSetXRef)
+ left join ProbeSetSE on
+ (ProbeSetSE.DataId = ProbeSetData.Id AND ProbeSetSE.StrainId = ProbeSetData.StrainId)
+ left join NStrain on
+ (NStrain.DataId = ProbeSetData.Id AND
+ NStrain.StrainId = ProbeSetData.StrainId)
+ WHERE
+ ProbeSet.Name = '%s' AND ProbeSetXRef.ProbeSetId = ProbeSet.Id AND
+ ProbeSetXRef.ProbeSetFreezeId = ProbeSetFreeze.Id AND
+ ProbeSetFreeze.Name = '%s' AND
+ ProbeSetXRef.DataId = ProbeSetData.Id AND
+ ProbeSetData.StrainId = Strain.Id
+ Order BY
+ Strain.Name
+ """
dataset_query["Publish"] = pheno_query
+ dataset_query["Geno"] = geno_query
+ dataset_query["ProbeSet"] = probeset_query
return dataset_query.get(dataset_type)