@@ -10,7 +10,7 @@ isore.extendAnnotations <- function(combinedTranscripts, annotationGrangesList,
1010 combinedTranscripts <- filterTranscripts(combinedTranscripts , min.sampleNumber )
1111 if (nrow(combinedTranscripts ) > 0 ) {
1212 group_var <- c(" intronStarts" ," intronEnds" ," chr" ," strand" ," start" ," end" ,
13- " confidenceType" ," readCount" , " maxTxScore" , " maxTxScore.noFit" )
13+ " confidenceType" ," readCount" , " maxTxScore" , " maxTxScore.noFit" , " firstExonGroup " , " lastExonGroup " )
1414 rowDataTibble <- select(combinedTranscripts ,all_of(group_var ))
1515 annotationSeqLevels <- seqlevels(annotationGrangesList )
1616 rowDataSplicedTibble <- filter(rowDataTibble ,
@@ -343,6 +343,16 @@ addNewSplicedReadClasses <- function(combinedTranscriptRanges,
343343 # annotate with compatible gene id,
344344 rowDataFilteredSpliced $ GENEID [equalQhits [! duplicated(equalQhits )]] <-
345345 mcols(annotationGrangesList [equalSubHits [! duplicated(equalQhits )]])$ GENEID
346+
347+ # remove TXNAME, GENEID, equal and compatible for
348+ idx_startEnd <- which(rowDataFilteredSpliced $ firstExonGroup == 0 |
349+ rowDataFilteredSpliced $ lastExonGroup == 0 )
350+ if (length(idx_startEnd ) > 0 ) {
351+ classificationTable $ compatible [idx_startEnd ] <- " "
352+ classificationTable $ equal [idx_startEnd ] <- " "
353+ rowDataFilteredSpliced $ GENEID [idx_startEnd ] <- NA
354+ rowDataFilteredSpliced $ TXNAME [idx_startEnd ] <- NA
355+ }
346356 # annotate as identical, using intron matches
347357 unlistedIntrons <- unlist(intronsByReadClass , use.names = TRUE )
348358 partitioning <- PartitioningByEnd(cumsum(elementNROWS(intronsByReadClass )),
@@ -355,7 +365,8 @@ addNewSplicedReadClasses <- function(combinedTranscriptRanges,
355365 updateWIntronMatches(unlistedIntrons , unlistedIntronsAnnotations ,
356366 partitioning , classificationTable , annotationGrangesList ,
357367 rowDataFilteredSpliced , exonsByReadClass , min.exonDistance ,
358- min.primarySecondaryDist , min.primarySecondaryDistStartEnd )
368+ min.primarySecondaryDist , min.primarySecondaryDistStartEnd )
369+ classificationTable <- updateWStartEnd(rowDataFilteredSpliced , classificationTable )
359370 rowDataFilteredSpliced $ readClassType <-
360371 apply(classificationTable , 1 , function (x ){paste(x [x != " " ], collapse = " :" )})
361372 rowDataFilteredSpliced $ novelTranscript = TRUE
@@ -420,6 +431,19 @@ updateWIntronMatches <- function(unlistedIntrons, unlistedIntronsAnnotations,
420431}
421432
422433
434+ # ' update classificationTable by start and end
435+ # ' @importFrom GenomicRanges match
436+ # ' @noRd
437+ updateWStartEnd <- function (rowDataSplicedTibble , classificationTable ) {
438+ idx <- which(rowDataSplicedTibble $ firstExonGroup == 0 |
439+ rowDataSplicedTibble $ lastExonGroup == 0 )
440+ if (length(idx ) > 0 ) {
441+ classificationTable $ compatible [idx ] <- " "
442+ classificationTable $ equal [idx ] <- " "
443+ }
444+ return (classificationTable )
445+ }
446+
423447
424448# ' assign gene id by maximum match
425449# ' @importFrom dplyr as_tibble %>% group_by summarise filter ungroup
0 commit comments