11"""Module for initializing data sources."""
22from datetime import datetime
3- from typing import Optional , Union , List , Tuple , Dict
3+ from typing import Optional , TypeVar , Union , List , Tuple , Dict
44from pathlib import Path
55import logging
66
2020
2121logger = logging .getLogger ("cool_seq_tool" )
2222
23+ CoordinatesResponseType = TypeVar (
24+ "CoordinatesResponseType" , GenomicDataResponse , TranscriptExonDataResponse
25+ )
26+
2327
2428class CoolSeqTool :
2529 """Class to initialize data sources."""
@@ -81,8 +85,8 @@ def service_meta() -> ServiceMeta:
8185
8286 @staticmethod
8387 def _return_warnings (
84- resp : Union [ GenomicDataResponse , TranscriptExonDataResponse ] ,
85- warning_msg : str ) -> Union [ GenomicDataResponse , TranscriptExonDataResponse ] :
88+ resp : CoordinatesResponseType ,
89+ warning_msg : str ) -> CoordinatesResponseType :
8690 """Add warnings to response object
8791
8892 :param Union[GenomicDataResponse, TranscriptExonDataResponse] resp:
@@ -97,18 +101,18 @@ def _return_warnings(
97101
98102 async def transcript_to_genomic_coordinates (
99103 self , gene : Optional [str ] = None , transcript : Optional [str ] = None ,
100- exon_start : Optional [int ] = None , exon_start_offset : Optional [ int ] = 0 , # noqa: E501
101- exon_end : Optional [int ] = None , exon_end_offset : Optional [ int ] = 0 ,
104+ exon_start : Optional [int ] = None , exon_start_offset : int = 0 , # noqa: E501
105+ exon_end : Optional [int ] = None , exon_end_offset : int = 0 ,
102106 ** kwargs ) -> GenomicDataResponse :
103107 """Get genomic data given transcript data.
104108 Will use GRCh38 coordinates if possible
105109
106- :param Optional[str] gene: Gene symbol
107- :param Optional[str] transcript: Transcript accession
108- :param Optional[int] exon_start: Starting transcript exon number
109- :param Optional[int] exon_end: Ending transcript exon number
110- :param Optional[int] exon_start_offset: Starting exon offset
111- :param Optional[int] exon_end_offset: Ending exon offset
110+ :param gene: Gene symbol
111+ :param transcript: Transcript accession
112+ :param exon_start: Starting transcript exon number
113+ :param exon_end: Ending transcript exon number
114+ :param exon_start_offset: Starting exon offset
115+ :param exon_end_offset: Ending exon offset
112116 :return: GRCh38 genomic data (inter-residue coordinates)
113117 """
114118 resp = GenomicDataResponse (
@@ -138,18 +142,18 @@ async def transcript_to_genomic_coordinates(
138142
139143 tx_exons , warning = await self .uta_db .get_tx_exons (transcript )
140144 if not tx_exons :
141- return self ._return_warnings (resp , warning )
145+ return self ._return_warnings (resp , warning or "" )
142146
143147 tx_exon_coords , warning = self .uta_db .get_tx_exon_coords (
144148 transcript , tx_exons , exon_start , exon_end )
145149 if not tx_exon_coords :
146- return self ._return_warnings (resp , warning )
150+ return self ._return_warnings (resp , warning or "" )
147151 tx_exon_start , tx_exon_end = tx_exon_coords
148152
149153 alt_ac_start_end , warning = await self .uta_db .get_alt_ac_start_and_end (
150154 transcript , tx_exon_start , tx_exon_end , gene = gene )
151155 if not alt_ac_start_end :
152- return self ._return_warnings (resp , warning )
156+ return self ._return_warnings (resp , warning or "" )
153157 alt_ac_start , alt_ac_end = alt_ac_start_end
154158
155159 gene = alt_ac_start [0 ] if alt_ac_start else alt_ac_end [0 ]
0 commit comments