Skip to content

Commit 5d8dcc2

Browse files
committed
feat: add mapped hgnc name to target genes table, set in mapping job and update related structures
1 parent e180334 commit 5d8dcc2

File tree

5 files changed

+48
-4
lines changed

5 files changed

+48
-4
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
"""add mapped hgnc name to targets
2+
3+
Revision ID: dcf8572d3a17
4+
Revises: b22b450d409c
5+
Create Date: 2025-12-12 17:32:40.147429
6+
7+
"""
8+
9+
import sqlalchemy as sa
10+
11+
from alembic import op
12+
13+
# revision identifiers, used by Alembic.
14+
revision = "dcf8572d3a17"
15+
down_revision = "b22b450d409c"
16+
branch_labels = None
17+
depends_on = None
18+
19+
20+
def upgrade():
21+
# ### commands auto generated by Alembic - please adjust! ###
22+
op.add_column("target_genes", sa.Column("mapped_hgnc_name", sa.String(), nullable=True))
23+
# ### end Alembic commands ###
24+
25+
26+
def downgrade():
27+
# ### commands auto generated by Alembic - please adjust! ###
28+
op.drop_column("target_genes", "mapped_hgnc_name")
29+
# ### end Alembic commands ###

src/mavedb/lib/mapping.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,19 @@
1313
class VRSMap:
1414
url: str
1515

16+
class GeneInfo(TypedDict):
17+
hgnc_symbol: str
18+
selection_method: str
19+
20+
class TargetAnnotation(TypedDict):
21+
gene_info: "VRSMap.GeneInfo"
22+
layers: dict[str, dict[str, dict[str, dict[str, Union[str, list[str]]]]]]
23+
1624
class ScoreSetMappingResults(TypedDict):
1725
metadata: Optional[dict[str, str]]
1826
dcd_mapping_version: str
1927
mapped_date_utc: date
20-
reference_sequences: Optional[dict[str, dict[str, dict[str, dict[str, Union[str, list[str]]]]]]]
28+
reference_sequences: Optional[dict[str, "VRSMap.TargetAnnotation"]]
2129
mapped_scores: Optional[list[dict]]
2230
error_message: Optional[str]
2331

src/mavedb/models/target_gene.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ class TargetGene(Base):
4747

4848
pre_mapped_metadata: Mapped[JSONB] = Column("pre_mapped_metadata", JSONB, nullable=True)
4949
post_mapped_metadata: Mapped[JSONB] = Column("post_mapped_metadata", JSONB, nullable=True)
50+
mapped_hgnc_name = Column(String, nullable=True)
5051
uniprot_id_from_mapped_metadata = Column(String, nullable=True)
5152

5253
creation_date = Column(Date, nullable=False, default=date.today)

src/mavedb/view_models/target_gene.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ class SavedTargetGene(TargetGeneBase):
6060
target_sequence: Optional[SavedTargetSequence] = None
6161
target_accession: Optional[SavedTargetAccession] = None
6262
external_identifiers: Sequence[external_gene_identifier_offset.SavedExternalGeneIdentifierOffset]
63+
mapped_hgnc_name: Optional[str] = None
6364
uniprot_id_from_mapped_metadata: Optional[str] = None
6465

6566
_record_type_factory = record_type_validator()(set_record_type)

src/mavedb/worker/jobs.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -453,10 +453,15 @@ async def map_variants_for_score_set(
453453
f"Target gene {target_gene_identifier} not found in database for score set {score_set.urn}."
454454
)
455455
# allow for multiple annotation layers
456-
pre_mapped_metadata = {}
457-
post_mapped_metadata = {}
456+
pre_mapped_metadata: dict[str, Any] = {}
457+
post_mapped_metadata: dict[str, Any] = {}
458458
excluded_pre_mapped_keys = {"sequence"}
459-
post_mapped_metadata["gene_info"] = reference_metadata[target_gene_identifier].get("gene_info")
459+
460+
gene_info = reference_metadata[target_gene_identifier].get("gene_info")
461+
if gene_info:
462+
target_gene.mapped_hgnc_name = gene_info.get("hgnc_symbol")
463+
post_mapped_metadata["hgnc_name_selection_method"] = gene_info.get("selection_method")
464+
460465
for annotation_layer in reference_metadata[target_gene_identifier]["layers"]:
461466
layer_premapped = reference_metadata[target_gene_identifier]["layers"][
462467
annotation_layer

0 commit comments

Comments
 (0)