Skip to content

Commit 9d3182a

Browse files
committed
feat: update CAR submission to use assay level HGVS strings and improve logging
1 parent 796a6f0 commit 9d3182a

File tree

1 file changed

+27
-19
lines changed

1 file changed

+27
-19
lines changed

src/mavedb/worker/jobs.py

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from arq import ArqRedis
1010
from arq.jobs import Job, JobStatus
1111
from cdot.hgvs.dataproviders import RESTDataProvider
12-
from sqlalchemy import cast, delete, null, select
12+
from sqlalchemy import cast, delete, func, null, select
1313
from sqlalchemy.dialects.postgresql import JSONB
1414
from sqlalchemy.orm import Session
1515

@@ -504,6 +504,7 @@ async def map_variants_for_score_set(
504504
mapping_api_version=mapping_results["dcd_mapping_version"],
505505
error_message=mapped_score.get("error_message", null()),
506506
current=True,
507+
hgvs_assay_level=get_hgvs_from_post_mapped(mapped_score.get("post_mapped")),
507508
)
508509
db.add(mapped_variant)
509510

@@ -874,43 +875,50 @@ async def submit_score_set_mappings_to_car(ctx: dict, correlation_id: str, score
874875

875876
try:
876877
variant_post_mapped_objects = db.execute(
877-
select(MappedVariant.id, MappedVariant.post_mapped)
878+
select(MappedVariant.id, MappedVariant.hgvs_assay_level)
878879
.join(Variant)
879880
.join(ScoreSet)
880881
.where(ScoreSet.urn == score_set.urn)
881-
.where(MappedVariant.post_mapped.is_not(None))
882+
.where(MappedVariant.hgvs_assay_level.is_not(None))
882883
.where(MappedVariant.current.is_(True))
883884
).all()
885+
variants_without_assay_level_hgvs = db.execute(
886+
select(func.count(MappedVariant.id))
887+
.join(Variant)
888+
.join(ScoreSet)
889+
.where(ScoreSet.urn == score_set.urn)
890+
.where(MappedVariant.hgvs_assay_level.is_(None))
891+
).scalar_one()
892+
893+
logging_context["variants_with_assay_level_hgvs"] = len(variant_post_mapped_objects)
894+
logging_context["variants_without_assay_level_hgvs"] = variants_without_assay_level_hgvs
884895

885896
if not variant_post_mapped_objects:
886897
logger.warning(
887-
msg="No current mapped variants with post mapped metadata were found for this score set. Skipping CAR submission.",
898+
msg="No current mapped variants with assay level HGVS were found for this score set. Skipping CAR submission.",
888899
extra=logging_context,
889900
)
890901
return {"success": True, "retried": False, "enqueued_job": None}
891902

892-
variant_post_mapped_hgvs: dict[str, list[int]] = {}
893-
for mapped_variant_id, post_mapped in variant_post_mapped_objects:
894-
hgvs_for_post_mapped = get_hgvs_from_post_mapped(post_mapped)
895-
896-
if not hgvs_for_post_mapped:
897-
logger.warning(
898-
msg=f"Could not construct a valid HGVS string for mapped variant {mapped_variant_id}. Skipping submission of this variant.",
899-
extra=logging_context,
900-
)
901-
continue
903+
if variants_without_assay_level_hgvs > 0:
904+
logger.warning(
905+
msg="Some mapped variants for this score set are missing assay level HGVS strings. These variants will be skipped during CAR submission.",
906+
extra=logging_context,
907+
)
902908

903-
if hgvs_for_post_mapped in variant_post_mapped_hgvs:
904-
variant_post_mapped_hgvs[hgvs_for_post_mapped].append(mapped_variant_id)
909+
variant_post_mapped_hgvs: dict[str, list[int]] = {}
910+
for mapped_variant_id, assay_level_hgvs in variant_post_mapped_objects:
911+
if assay_level_hgvs in variant_post_mapped_hgvs:
912+
variant_post_mapped_hgvs[assay_level_hgvs].append(mapped_variant_id)
905913
else:
906-
variant_post_mapped_hgvs[hgvs_for_post_mapped] = [mapped_variant_id]
914+
variant_post_mapped_hgvs[assay_level_hgvs] = [mapped_variant_id]
907915

908916
except Exception as e:
909917
send_slack_error(e)
910918
send_slack_message(text=text % score_set.urn)
911919
logging_context = {**logging_context, **format_raised_exception_info_as_dict(e)}
912920
logger.error(
913-
msg="LDH mapped resource submission encountered an unexpected error while attempting to construct post mapped HGVS strings. This job will not be retried.",
921+
msg="CAR mapped resource submission encountered an unexpected error while attempting to build a submission resource of assay level HGVS strings. This job will not be retried.",
914922
extra=logging_context,
915923
)
916924

@@ -931,7 +939,7 @@ async def submit_score_set_mappings_to_car(ctx: dict, correlation_id: str, score
931939
send_slack_message(text=text % score_set.urn)
932940
logging_context = {**logging_context, **format_raised_exception_info_as_dict(e)}
933941
logger.error(
934-
msg="LDH mapped resource submission encountered an unexpected error while attempting to authenticate to the LDH. This job will not be retried.",
942+
msg="CAR mapped resource submission encountered an unexpected error while attempting to authenticate to the CAR. This job will not be retried.",
935943
extra=logging_context,
936944
)
937945

0 commit comments

Comments
 (0)