aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--wqflask/wqflask/ctl/gn3_ctl_analysis.py79
1 files changed, 44 insertions, 35 deletions
diff --git a/wqflask/wqflask/ctl/gn3_ctl_analysis.py b/wqflask/wqflask/ctl/gn3_ctl_analysis.py
index 113764a7..ba7d4971 100644
--- a/wqflask/wqflask/ctl/gn3_ctl_analysis.py
+++ b/wqflask/wqflask/ctl/gn3_ctl_analysis.py
@@ -1,4 +1,5 @@
import requests
+import itertools
from utility import genofile_parser
from utility.tools import GN3_LOCAL_URL
@@ -6,37 +7,53 @@ from utility.tools import locate
from base.trait import create_trait
from base.trait import retrieve_sample_data
+from base import data_set
-def parse_geno_data(dataset_group_name) ->dict:
- """function to parse geno file data"""
- genofile_location = locate(dataset.group.name + ".geno", "genotype")
- parser = genofile_parser.ConvertGenoFile(genofilelocation)
- parser.process_csv()
+def process_significance_data(significant_data):
+ """function to process significance the data for
+ datatables"""
- # get marker and marker names
+ col_names = ["trait","marker","trait_2","LOD","dCor"]
- return parser
+ data_set_rows = [[] for _ in range(len(significant_data["trait"]))]
+
+
+
+
+ return {
+ "col_names":[],
+ ""
+ }
+
+def parse_geno_data(dataset_group_name) -> dict:
+ """function to parse geno file data"""
+ genofile_location = locate(dataset_group_name + ".geno", "genotype")
+ parser = genofile_parser.ConvertGenoFile(genofile_location)
+
+ parser.process_csv()
markers = []
+
markernames = []
+
for marker in parser.markers:
markernames.append(marker["name"])
markers.append(marker["genotypes"])
return {
- "genotypes":list(itertools.chain(*markers)),
- "markernames":markernames
- "individuals":parser.individuals,
+ "genotypes": list(itertools.chain(*markers)),
+ "markernames": markernames,
+ "individuals": parser.individuals
}
-def parse_phenotype_data(trait_db_list):
- """function to parse and generate phenodata"""
+def parse_phenotype_data(trait_db_list, dataset, individuals):
+ """function to parse and generate phenodata"""
traits = []
for trait in trait_db_list:
@@ -50,16 +67,15 @@ def parse_phenotype_data(trait_db_list):
else:
traits.append("-999")
-
- # missing inviduals
+ # missing inviduals
return {
- "trait_db_list":trait_db_list,
- "traits":traits
+ "trait_db_list": trait_db_list,
+ "traits": traits,
+ "individuals": individuals
}
-
def parse_form_data(form_data: dict):
"""function to parse/validate form data
input: dict containing required data
@@ -68,11 +84,11 @@ def parse_form_data(form_data: dict):
"""
trait_db_list = [trait.strip()
- for trait in requestform['trait_list'].split(',')]
- form_data["trait_db_list"] = [x for x in trait_db_list if x]
+ for trait in form_data['trait_list'].split(',')]
+ form_data["trait_db_list"] = [x for x in trait_db_list if x]
form_data["nperm"] = int(form_data["nperm"])
- form_data["significance"] = float(int(form_data["significance"]))
+ form_data["significance"] = float(form_data["significance"])
form_data["strategy"] = form_data["strategy"].capitalize()
return form_data
@@ -84,32 +100,25 @@ def run_ctl(requestform):
ctl_api = f"{GN3_LOCAL_URL}/api/ctl/run_ctl"
- form_data = parse_form_data(requestform)
+ form_data = parse_form_data(requestform.to_dict())
trait_db_list = form_data["trait_db_list"]
dataset = data_set.create_dataset(trait_db_list[0].split(":")[1])
- pheno_data = parse_geno_data(dataset.group.name)
-
- geno_data = parse_phenotype_data(trait_db_list)
-
-
- pheno_data["individuals"] = geno_data["individuals"]
+ geno_data = parse_geno_data(dataset.group.name)
+ pheno_data = parse_phenotype_data(
+ trait_db_list, dataset, geno_data["individuals"])
response = requests.post(ctl_api, json={
- "genoData":geno_data,
- "phenoData":pheno_data,
+ "genoData": geno_data,
+ "phenoData": pheno_data,
- **form_data,
+ **form_data,
})
# todo check for errors
- response_data = response.json()
-
- print(">>>>>>>>>>>>>>>>>>>>>>",response_data)
-
- return ""
+ return response.json() \ No newline at end of file