diff options
author | Alexander Kabui | 2021-03-30 23:58:02 +0300 |
---|---|---|
committer | Alexander Kabui | 2021-03-30 23:58:02 +0300 |
commit | b88d63ac06f157a97cc88bee0ea702949a5a0c64 (patch) | |
tree | 60ad4156c27c2a2801c291bc5ed9d29a048e2ba5 /gn3/computations/datasets.py | |
parent | 31d9aeb1bf4686500406a809d0c5fa4b629125b0 (diff) | |
download | genenetwork3-b88d63ac06f157a97cc88bee0ea702949a5a0c64.tar.gz |
refactor retrieve trait sample data and tests
Diffstat (limited to 'gn3/computations/datasets.py')
-rw-r--r-- | gn3/computations/datasets.py | 62 |
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) |