11import logging
22
3- from geneml .types import Exon , SplicingType , Transcript
3+ from geneml .types import Exon , Transcript , TranscriptVariant
44
55logger = logging .getLogger ("geneml" )
66
@@ -53,8 +53,8 @@ def get_introns_in_range(introns: list[tuple[int,int]], range: tuple[int,int], s
5353 raise ValueError (f"Invalid strand: { strand } " )
5454
5555
56- def get_alternative_splicing_type (primary : Transcript , alt : Transcript ) -> SplicingType :
57- """Classify alternative splicing events between a primary and alternative transcript.
56+ def get_alternative_transcript_variant (primary : Transcript , alt : Transcript ) -> TranscriptVariant :
57+ """Classify the transcript variant of an alternative transcript.
5858
5959 Compares intron junctions and terminal exon boundaries to detect exon skipping,
6060 alternative 3' and 5' splice sites, intron retention, and alternative first/last
@@ -66,7 +66,7 @@ def get_alternative_splicing_type(primary: Transcript, alt: Transcript) -> Splic
6666 alt: The alternative transcript being classified.
6767
6868 Returns:
69- The assigned SplicingType for the alternative transcript.
69+ The assigned TranscriptVariant for the alternative transcript.
7070 """
7171 assert primary .exons != alt .exons , (
7272 f"Identical transcripts: { primary .transcript_id } and { alt .transcript_id } "
@@ -110,9 +110,9 @@ def get_alternative_splicing_type(primary: Transcript, alt: Transcript) -> Splic
110110 raise ValueError (f"Invalid strand: { strand } " )
111111
112112 if alt_first != primary_first :
113- events .add (SplicingType .ALT_FIRST_EXON )
113+ events .add (TranscriptVariant .ALT_FIRST_EXON )
114114 if alt_last != primary_last :
115- events .add (SplicingType .ALT_LAST_EXON )
115+ events .add (TranscriptVariant .ALT_LAST_EXON )
116116
117117 # 2. EXON SKIPPING
118118 for s , e in P :
@@ -121,7 +121,7 @@ def get_alternative_splicing_type(primary: Transcript, alt: Transcript) -> Splic
121121 s2 , e2 = A [i + 1 ]
122122
123123 if s1 == s and e2 == e :
124- events .add (SplicingType .EXON_SKIPPING )
124+ events .add (TranscriptVariant .EXON_SKIPPING )
125125 consumed_P .add ((s , e ))
126126 consumed_A .add ((s1 , e1 ))
127127 consumed_A .add ((s2 , e2 ))
@@ -132,7 +132,7 @@ def get_alternative_splicing_type(primary: Transcript, alt: Transcript) -> Splic
132132 s2 , e2 = P [i + 1 ]
133133
134134 if s1 == s and e2 == e :
135- events .add (SplicingType .EXON_SKIPPING )
135+ events .add (TranscriptVariant .EXON_SKIPPING )
136136 consumed_A .add ((s , e ))
137137 consumed_P .add ((s1 , e1 ))
138138 consumed_P .add ((s2 , e2 ))
@@ -148,18 +148,18 @@ def get_alternative_splicing_type(primary: Transcript, alt: Transcript) -> Splic
148148 # Skip if this is in a terminal exon already recognized as alt event
149149 at_alt_first_exon = (
150150 ((s1 , e1 ) == P [0 ] or (s2 , e2 ) == A [0 ])
151- and SplicingType .ALT_FIRST_EXON in events
151+ and TranscriptVariant .ALT_FIRST_EXON in events
152152 )
153153 at_alt_last_exon = (
154154 ((s1 , e1 ) == P [- 1 ] or (s2 , e2 ) == A [- 1 ])
155- and SplicingType .ALT_LAST_EXON in events
155+ and TranscriptVariant .ALT_LAST_EXON in events
156156 )
157157 if not (at_alt_first_exon or at_alt_last_exon ):
158- events .add (SplicingType .ALT_3_SPLICE_SITE )
158+ events .add (TranscriptVariant .ALT_3_SPLICE_SITE )
159159 consumed_P .add ((s1 , e1 ))
160160 consumed_A .add ((s2 , e2 ))
161161 if e1 == e2 and s1 != s2 :
162- events .add (SplicingType .ALT_5_SPLICE_SITE )
162+ events .add (TranscriptVariant .ALT_5_SPLICE_SITE )
163163 consumed_P .add ((s1 , e1 ))
164164 consumed_A .add ((s2 , e2 ))
165165
@@ -168,13 +168,13 @@ def get_alternative_splicing_type(primary: Transcript, alt: Transcript) -> Splic
168168 remaining_A = (A_set - P_set ) - consumed_A
169169
170170 if remaining_P or remaining_A :
171- events .add (SplicingType .INTRON_RETENTION )
171+ events .add (TranscriptVariant .INTRON_RETENTION )
172172
173173 assert events , (
174- f"No splicing events detected between { primary .transcript_id } and { alt .transcript_id } ; "
174+ f"No events detected between { primary .transcript_id } and { alt .transcript_id } ; "
175175 f"this should not happen"
176176 )
177177
178178 if len (events ) == 1 :
179179 return events .pop ()
180- return SplicingType .COMPLEX
180+ return TranscriptVariant .COMPLEX
0 commit comments