Skip to content

Commit f47d54a

Browse files
committed
remove TXNAME, GENEID, equal and compatible of read class with extended TSS/TES
1 parent 893bc68 commit f47d54a

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

R/bambu-extendAnnotations-utilityExtend.R

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)