From 9a9bfd699a5a12c6e7a55d4f59a3a781ee7e63e5 Mon Sep 17 00:00:00 2001 From: Dave Lawrence Date: Fri, 17 Jan 2025 14:39:48 +1030 Subject: [PATCH] issue #1227 - fix c.HGVS (make it null on any error like VEP now) --- .../commands/fix_annotation_sv_c_hgvs.py | 7 ++--- .../0123_one_off_fix_annotation_sv_c_hgvs.py | 28 +++++++++++++++++++ .../bulk_vep_vcf_annotation_inserter.py | 3 +- 3 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 annotation/migrations/0123_one_off_fix_annotation_sv_c_hgvs.py diff --git a/annotation/management/commands/fix_annotation_sv_c_hgvs.py b/annotation/management/commands/fix_annotation_sv_c_hgvs.py index 395184d14..52ea15b3d 100755 --- a/annotation/management/commands/fix_annotation_sv_c_hgvs.py +++ b/annotation/management/commands/fix_annotation_sv_c_hgvs.py @@ -4,10 +4,9 @@ from collections import Counter from django.core.management.base import BaseCommand -from django.db.models import Q, Func, Value, F -from annotation.models import VariantAnnotation, VariantTranscriptAnnotation, VariantAnnotationVersion, \ - TranscriptVersion, defaultdict, AnnotationRun, VariantAnnotationPipelineType, AnnotationStatus +from annotation.models import VariantAnnotation, VariantTranscriptAnnotation, \ + TranscriptVersion, AnnotationRun, VariantAnnotationPipelineType, AnnotationStatus from genes.hgvs import HGVSMatcher from snpdb.models import Variant from snpdb.models.models_genome import GenomeBuild @@ -57,7 +56,7 @@ def handle(self, *args, **options): transcript_accession) hgvs_c_results["ok"] += 1 except Exception as e: - hgvs_c = VariantAnnotation.SV_HGVS_ERROR_MESSAGE + hgvs_c = None # c.HGVS is ok to be blank hgvs_c_results["error"] += 1 record.hgvs_c = hgvs_c diff --git a/annotation/migrations/0123_one_off_fix_annotation_sv_c_hgvs.py b/annotation/migrations/0123_one_off_fix_annotation_sv_c_hgvs.py new file mode 100644 index 000000000..ca67ee32b --- /dev/null +++ b/annotation/migrations/0123_one_off_fix_annotation_sv_c_hgvs.py @@ -0,0 +1,28 @@ +# Generated by Django 4.2.17 on 2025-01-17 04:00 + +from django.db import migrations + +from manual.operations.manual_operations import ManualOperation + +def _check_has_sv_annotation(apps): + AnnotationRun = apps.get_model("annotation", "AnnotationRun") + + VAP_STRUCTURAL_VARIANT = 'C' + AS_FINISHED = 'F' + + qs = AnnotationRun.objects.filter(pipeline_type=VAP_STRUCTURAL_VARIANT, + status=AS_FINISHED, + annotated_count__gt=0) + return qs.exists() + + +class Migration(migrations.Migration): + + dependencies = [ + ('annotation', '0122_vep_gnomad_t2t'), + ] + + operations = [ + ManualOperation(task_id=ManualOperation.task_id_manage(["fix_annotation_sv_c_hgvs"]), + test=_check_has_sv_annotation) + ] diff --git a/annotation/vcf_files/bulk_vep_vcf_annotation_inserter.py b/annotation/vcf_files/bulk_vep_vcf_annotation_inserter.py index 423cc9b95..a241a1e6e 100644 --- a/annotation/vcf_files/bulk_vep_vcf_annotation_inserter.py +++ b/annotation/vcf_files/bulk_vep_vcf_annotation_inserter.py @@ -539,6 +539,7 @@ def _add_hgvs_c(self, variant_coordinate: Optional[VariantCoordinate], transcrip return if transcript_accession: + try: hgvs_c = self.hgvs_matcher.variant_coordinate_to_hgvs_variant(variant_coordinate, transcript_accession) self._generated_hgvs_c["OK"] += 1 @@ -546,7 +547,7 @@ def _add_hgvs_c(self, variant_coordinate: Optional[VariantCoordinate], transcrip except Exception as e: logging.error("Error calculating c.HGVS for '%s'/'%s': %s", variant_coordinate, transcript_accession, e) - hgvs_c = VariantAnnotation.SV_HGVS_ERROR_MESSAGE + hgvs_c = None # For c.HGVS - it's ok to be blank self._generated_hgvs_c["error"] += 1 transcript_data['hgvs_c'] = hgvs_c