11""""Provide mapping router"""
22from pathlib import Path
33
4+ from cool_seq_tool .schemas import AnnotationLayer
45from fastapi import APIRouter , HTTPException
56from fastapi .responses import JSONResponse
67from requests import HTTPError
2122 with_mavedb_score_set ,
2223)
2324from dcd_mapping .resource_utils import ResourceAcquisitionError
24- from dcd_mapping .schemas import ScoreAnnotation , ScoresetMapping , VrsVersion
25+ from dcd_mapping .schemas import (
26+ ScoreAnnotation ,
27+ ScoresetMapping ,
28+ TargetType ,
29+ TxSelectResult ,
30+ VrsVersion ,
31+ )
2532from dcd_mapping .transcripts import select_transcripts
2633from dcd_mapping .vrs_map import VrsMapError , vrs_map
2734
@@ -147,7 +154,8 @@ async def map_scoreset(urn: str, store_path: Path | None = None) -> ScoresetMapp
147154 preferred_layers = {
148155 _set_scoreset_layer (urn , annotated_vrs_results [target_gene ]),
149156 }
150- reference_sequences [target_gene ] = {
157+ target_gene_name = metadata .target_genes [target_gene ].target_gene_name
158+ reference_sequences [target_gene_name ] = {
151159 layer : {
152160 "computed_reference_sequence" : None ,
153161 "mapped_reference_sequence" : None ,
@@ -157,12 +165,12 @@ async def map_scoreset(urn: str, store_path: Path | None = None) -> ScoresetMapp
157165 # sometimes Nonetype layers show up in preferred layers dict; remove these
158166 preferred_layers .discard (None )
159167 for layer in preferred_layers :
160- reference_sequences [target_gene ][layer ][
168+ reference_sequences [target_gene_name ][layer ][
161169 "computed_reference_sequence"
162170 ] = _get_computed_reference_sequence (
163171 metadata .target_genes [target_gene ], layer , transcripts [target_gene ]
164172 )
165- reference_sequences [target_gene ][layer ][
173+ reference_sequences [target_gene_name ][layer ][
166174 "mapped_reference_sequence"
167175 ] = _get_mapped_reference_sequence (
168176 metadata .target_genes [target_gene ],
@@ -193,6 +201,23 @@ async def map_scoreset(urn: str, store_path: Path | None = None) -> ScoresetMapp
193201 ) or layer is None :
194202 del reference_sequences [target_gene ][layer ]
195203
204+ # if genomic layer, not accession-based, and target gene type is coding, add cdna entry (just the sequence accession) to reference_sequences dict
205+ if (
206+ AnnotationLayer .GENOMIC in reference_sequences [target_gene_name ]
207+ and metadata .target_genes [target_gene ].target_gene_category
208+ == TargetType .PROTEIN_CODING
209+ and metadata .target_genes [target_gene ].target_accession_id is None
210+ and transcripts [target_gene ] is not None
211+ and isinstance (transcripts [target_gene ], TxSelectResult )
212+ and transcripts [target_gene ].nm is not None
213+ ):
214+ reference_sequences [target_gene_name ][AnnotationLayer .CDNA ] = {
215+ "computed_reference_sequence" : None ,
216+ "mapped_reference_sequence" : {
217+ "sequence_accessions" : [transcripts [target_gene ].nm ]
218+ },
219+ }
220+
196221 except Exception as e :
197222 return JSONResponse (
198223 content = ScoresetMapping (
0 commit comments