From 25d17925981b6bd84440cb734f325fb4e3c622ef Mon Sep 17 00:00:00 2001 From: Shettland Date: Wed, 2 Oct 2024 15:30:55 +0200 Subject: [PATCH 1/7] Changed dict structure for variantdata api requests --- core/api/utils/variants.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/core/api/utils/variants.py b/core/api/utils/variants.py index 45dd3a01..1bb66eca 100644 --- a/core/api/utils/variants.py +++ b/core/api/utils/variants.py @@ -67,8 +67,8 @@ def get_variant_id(data): return {"ERROR": core.config.ERROR_CHROMOSOME_NOT_DEFINED_IN_DATABASE} variant_obj = core.models.Variant.objects.filter( chromosomeID_id=chr_obj, - pos__iexact=data["Variant"]["pos"], - alt__iexact=data["Variant"]["alt"], + pos__iexact=data["pos"], + alt__iexact=data["alt"], ).last() if variant_obj is None: # Create the variant @@ -78,9 +78,9 @@ def get_variant_id(data): variant_dict = {} variant_dict["chromosomeID_id"] = chr_obj.get_chromosome_id() variant_dict["filterID_id"] = filter_obj.get_filter_id() - variant_dict["pos"] = data["Variant"]["pos"] - variant_dict["alt"] = data["Variant"]["alt"] - variant_dict["ref"] = data["Variant"]["ref"] + variant_dict["pos"] = data["pos"] + variant_dict["alt"] = data["alt"] + variant_dict["ref"] = data["ref"] variant_serializer = core.api.serializers.CreateVariantSerializer( data=variant_dict ) @@ -104,7 +104,7 @@ def get_required_variant_ann_id(data): if gene_obj is None: return {"ERROR": core.config.ERROR_GENE_NOT_DEFINED_IN_DATABASE} v_ann_ids["geneID_id"] = gene_obj.get_gene_id() - effect_obj = create_or_get_effect_obj(data["Effect"]) + effect_obj = create_or_get_effect_obj(data["effect"]) if isinstance(effect_obj, dict): return effect_obj v_ann_ids["geneID_id"] = gene_obj.get_gene_id() @@ -122,6 +122,8 @@ def split_variant_data(data, sample_obj, date): split_data["variant_in_sample"]["variantID_id"] = variant_id split_data["variant_in_sample"]["analysis_date"] = date + var_keys = ["dp", "ref_dp", "alt_dp", "af"] + data["VariantInSample"] = {x:y for x,y in data.items() if x in var_keys} split_data["variant_in_sample"].update(data["VariantInSample"]) v_ann_id = get_required_variant_ann_id(data) @@ -129,7 +131,9 @@ def split_variant_data(data, sample_obj, date): return v_ann_id split_data["variant_ann"] = v_ann_id split_data["variant_ann"]["variantID_id"] = variant_id - + + annot_keys = ["hgvs_c", "hgvs_p", "hgvs_p_1_letter"] + data["VariantAnnotation"] = {x:y for x,y in data.items() if x in annot_keys} split_data["variant_ann"].update(data["VariantAnnotation"]) return split_data From d3ac1c34027542675a8d0ac0e56a1c38494684b2 Mon Sep 17 00:00:00 2001 From: Shettland Date: Wed, 2 Oct 2024 15:32:15 +0200 Subject: [PATCH 2/7] Informative message when there is no data to be shown --- core/views.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/views.py b/core/views.py index af7643bc..7228f4cb 100644 --- a/core/views.py +++ b/core/views.py @@ -258,6 +258,8 @@ def intranet(request): intra_data["ena_graph"] = core.utils.public_db.percentage_graphic( len(sample_lab_objs), len(ena_acc), "" ) + else: + intra_data = f"No samples found for selected laboratory: {lab_name}" return render(request, "core/intranet.html", {"intra_data": intra_data}) else: # loged user belongs to Relecov Manager group From 771a35819821e86e8c442b58bcd2e0f56e363267 Mon Sep 17 00:00:00 2001 From: Shettland Date: Thu, 3 Oct 2024 15:58:26 +0200 Subject: [PATCH 3/7] Adapted some dict keys to long_table fields --- core/api/utils/variants.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/api/utils/variants.py b/core/api/utils/variants.py index 1bb66eca..ab679371 100644 --- a/core/api/utils/variants.py +++ b/core/api/utils/variants.py @@ -62,7 +62,7 @@ def store_variant_in_sample(v_data): def get_variant_id(data): """look out for the necessary reference ids to create the variance instance""" - chr_obj = core.utils.variants.get_if_chromosomes_exists(data["Chromosome"]) + chr_obj = core.utils.variants.get_if_chromosomes_exists(data["chromosome"]) if chr_obj is None: return {"ERROR": core.config.ERROR_CHROMOSOME_NOT_DEFINED_IN_DATABASE} variant_obj = core.models.Variant.objects.filter( @@ -72,7 +72,7 @@ def get_variant_id(data): ).last() if variant_obj is None: # Create the variant - filter_obj = create_or_get_filter_obj(data["Filter"]) + filter_obj = create_or_get_filter_obj(data["filter"]) if isinstance(filter_obj, dict): return filter_obj variant_dict = {} @@ -99,7 +99,7 @@ def get_variant_analysis_defined(s_obj): def get_required_variant_ann_id(data): """Look for the ids that variant annotation needs""" v_ann_ids = {} - gene_obj = core.utils.variants.get_gene_obj_from_gene_name(data["Gene"]) + gene_obj = core.utils.variants.get_gene_obj_from_gene_name(data["gene"]) if gene_obj is None: return {"ERROR": core.config.ERROR_GENE_NOT_DEFINED_IN_DATABASE} From 7b9c37fed94c2766b447bcb8c94d8d05c2ca0351 Mon Sep 17 00:00:00 2001 From: Shettland Date: Thu, 3 Oct 2024 16:01:04 +0200 Subject: [PATCH 4/7] Included more options to select time period to lineages VOC --- dashboard/utils/var_lineage_variation_over_time_graph.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dashboard/utils/var_lineage_variation_over_time_graph.py b/dashboard/utils/var_lineage_variation_over_time_graph.py index 68219eff..26f95ef5 100644 --- a/dashboard/utils/var_lineage_variation_over_time_graph.py +++ b/dashboard/utils/var_lineage_variation_over_time_graph.py @@ -46,9 +46,13 @@ def create_lineages_variations_graphic(date_range=None): id="periodTime", options=[ {"label": "Select Period", "value": ""}, + {"label": "Last 4 years", "value": "1460"}, {"label": "Last 2 years", "value": "730"}, + {"label": "Last year", "value": "365"}, {"label": "Last 6 months", "value": "180"}, + {"label": "Last 3 months", "value": "90"}, {"label": "Last month", "value": "30"}, + {"label": "Last week", "value": "7"} ], ), ], From 89ab1d88707016e5e182ccacb8eb0de66370094d Mon Sep 17 00:00:00 2001 From: Shettland Date: Tue, 15 Oct 2024 17:12:09 +0200 Subject: [PATCH 5/7] fixed filter key for variant data --- core/api/utils/variants.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/api/utils/variants.py b/core/api/utils/variants.py index ab679371..0e2e8694 100644 --- a/core/api/utils/variants.py +++ b/core/api/utils/variants.py @@ -10,7 +10,7 @@ def create_or_get_filter_obj(filter_value): if core.models.Filter.objects.filter(filter__iexact=filter_value).exists(): return core.models.Filter.objects.filter(filter__iexact=filter_value).last() filter_serializer = core.api.serializers.CreateFilterSerializer( - data={"filter": filter_value} + data={"Filter": filter_value} ) if filter_serializer.is_valid(): filter_obj = filter_serializer.save() @@ -72,7 +72,7 @@ def get_variant_id(data): ).last() if variant_obj is None: # Create the variant - filter_obj = create_or_get_filter_obj(data["filter"]) + filter_obj = create_or_get_filter_obj(data["Filter"]) if isinstance(filter_obj, dict): return filter_obj variant_dict = {} From bf98a212603bc78949f269fc0904c3ebb0985de2 Mon Sep 17 00:00:00 2001 From: Shettland Date: Tue, 15 Oct 2024 17:41:21 +0200 Subject: [PATCH 6/7] Renamed keys for variant data. linting --- core/api/utils/variants.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/api/utils/variants.py b/core/api/utils/variants.py index 0e2e8694..bf876768 100644 --- a/core/api/utils/variants.py +++ b/core/api/utils/variants.py @@ -123,7 +123,7 @@ def split_variant_data(data, sample_obj, date): split_data["variant_in_sample"]["analysis_date"] = date var_keys = ["dp", "ref_dp", "alt_dp", "af"] - data["VariantInSample"] = {x:y for x,y in data.items() if x in var_keys} + data["VariantInSample"] = {x: y for x, y in data.items() if x in var_keys} split_data["variant_in_sample"].update(data["VariantInSample"]) v_ann_id = get_required_variant_ann_id(data) @@ -131,9 +131,9 @@ def split_variant_data(data, sample_obj, date): return v_ann_id split_data["variant_ann"] = v_ann_id split_data["variant_ann"]["variantID_id"] = variant_id - + annot_keys = ["hgvs_c", "hgvs_p", "hgvs_p_1_letter"] - data["VariantAnnotation"] = {x:y for x,y in data.items() if x in annot_keys} + data["VariantAnnotation"] = {x: y for x, y in data.items() if x in annot_keys} split_data["variant_ann"].update(data["VariantAnnotation"]) return split_data From 221433598659fff9630754dc671d08a8466ec6fd Mon Sep 17 00:00:00 2001 From: Shettland Date: Tue, 15 Oct 2024 17:44:15 +0200 Subject: [PATCH 7/7] Increased time options for lineage graph --- dashboard/utils/var_lineage_variation_over_time_graph.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dashboard/utils/var_lineage_variation_over_time_graph.py b/dashboard/utils/var_lineage_variation_over_time_graph.py index 26f95ef5..4090a368 100644 --- a/dashboard/utils/var_lineage_variation_over_time_graph.py +++ b/dashboard/utils/var_lineage_variation_over_time_graph.py @@ -52,7 +52,7 @@ def create_lineages_variations_graphic(date_range=None): {"label": "Last 6 months", "value": "180"}, {"label": "Last 3 months", "value": "90"}, {"label": "Last month", "value": "30"}, - {"label": "Last week", "value": "7"} + {"label": "Last week", "value": "7"}, ], ), ],