From cd4766394c10b7bd04ecff4365b60b1ce0e4abcb Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 1 Dec 2022 17:28:49 +0800 Subject: [PATCH 001/189] Remove SE from being combined during extendAnno --- R/bambu-extendAnnotations-utilityCombine.R | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/R/bambu-extendAnnotations-utilityCombine.R b/R/bambu-extendAnnotations-utilityCombine.R index 7f1a521a..cdf0c5ef 100644 --- a/R/bambu-extendAnnotations-utilityCombine.R +++ b/R/bambu-extendAnnotations-utilityCombine.R @@ -19,14 +19,15 @@ isore.combineTranscriptCandidates <- function(readClassList, min.readCount, min.readFractionByGene, min.txScore.multiExon, min.txScore.singleExon, verbose) %>% data.table() combinedSplicedTranscripts[,confidenceType := "highConfidenceJunctionReads"] - combinedUnsplicedTranscripts <- - combineUnsplicedTranscriptModels(readClassList, bpParameters, - stranded, min.readCount, min.readFractionByGene, - min.txScore.multiExon, min.txScore.singleExon, verbose) %>% data.table() - combinedUnsplicedTranscripts[, confidenceType := "unsplicedNew"] - combinedTranscripts <- as_tibble(rbindlist(list(combinedSplicedTranscripts, - combinedUnsplicedTranscripts), fill = TRUE)) - return(combinedTranscripts) + return(combinedSplicedTranscripts) + # combinedUnsplicedTranscripts <- + # combineUnsplicedTranscriptModels(readClassList, bpParameters, + # stranded, min.readCount, min.readFractionByGene, + # min.txScore.multiExon, min.txScore.singleExon, verbose) %>% data.table() + # combinedUnsplicedTranscripts[, confidenceType := "unsplicedNew"] + # combinedTranscripts <- as_tibble(rbindlist(list(combinedSplicedTranscripts, + # combinedUnsplicedTranscripts), fill = TRUE)) + # return(combinedTranscripts) } From cbec873835e600e4d83e23860f9454ef6c0bafd1 Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 14 Apr 2023 16:11:39 +0800 Subject: [PATCH 002/189] Copy over rowdata from equal read classes above NDR threshold --- R/bambu-extendAnnotations-utilityExtend.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index 01310fa9..beb2893f 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -95,7 +95,7 @@ filterTranscriptsByAnnotation <- function(rowDataCombined, annotationGrangesList } else { if(is.null(NDR)) NDR = 0.5 } - filterSet = (rowDataCombined$NDR <= NDR) + filterSet = (rowDataCombined$NDR <= NDR | rowDataCombined$readClassType == "equal:compatible") exonRangesCombined <- exonRangesCombined[filterSet] rowDataCombined <- rowDataCombined[filterSet,] #calculate relative subset read count after filtering (increase speed, subsets are not considered here) From c7306eda7cbad3a8c8ba538d618b75af2a6eaf6e Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 14 Apr 2023 17:37:22 +0800 Subject: [PATCH 003/189] Add lowConfidenceTranscripts to metadata and speed up relSubsetCount --- R/bambu-extendAnnotations-utilityExtend.R | 73 +++++++++++++++-------- 1 file changed, 49 insertions(+), 24 deletions(-) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index beb2893f..902c34a0 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -80,42 +80,52 @@ filterTranscriptsByAnnotation <- function(rowDataCombined, annotationGrangesList #calculate relative read count before any filtering rowDataCombined <- group_by(rowDataCombined, GENEID) %>% mutate(relReadCount = readCount/sum(readCount)) + + #filter out subset reads if (remove.subsetTx) { # (1) based on compatibility with annotations - notCompatibleIds <- which(!grepl("compatible", rowDataCombined$readClassType) | + notCompatibleIds <- (!grepl("compatible", rowDataCombined$readClassType) | rowDataCombined$readClassType == "equal:compatible") #keep equal for FDR calculation + # subsetTranscripts <- combindRowDataWithRanges( + # rowDataCombined[!notCompatibleIds,], + # exonRangesCombined[!notCompatibleIds]) exonRangesCombined <- exonRangesCombined[notCompatibleIds] rowDataCombined <- rowDataCombined[notCompatibleIds,] } #(2) remove transcripts below NDR threshold/identical junctions to annotations rowDataCombined = calculateNDROnTranscripts(rowDataCombined, useTxScore = length(annotationGrangesList)==0) - if(length(annotationGrangesList)>0){ #only recommend an NDR if its possible to calculate an NDR NDR = recommendNDR(rowDataCombined, baselineFDR, NDR, defaultModels, verbose) } else { if(is.null(NDR)) NDR = 0.5 } filterSet = (rowDataCombined$NDR <= NDR | rowDataCombined$readClassType == "equal:compatible") + lowConfidenceTranscripts <- combindRowDataWithRanges( + rowDataCombined[!filterSet,], + exonRangesCombined[!filterSet]) exonRangesCombined <- exonRangesCombined[filterSet] rowDataCombined <- rowDataCombined[filterSet,] - #calculate relative subset read count after filtering (increase speed, subsets are not considered here) + mcols(exonRangesCombined)$txid <- seq_along(exonRangesCombined) - minEq <- getMinimumEqClassByTx(exonRangesCombined)$eqClassById - rowDataCombined$relSubsetCount <- rowDataCombined$readCount/unlist(lapply(minEq, function(x){return(sum(rowDataCombined$readCount[x]))})) - #post extend annotation filters applied here (currently only subset filter) - if(min.readFractionByEqClass>0 & sum(filterSet)>0) { # filter out subset transcripts based on relative expression - filterSet <- rowDataCombined$relSubsetCount > min.readFractionByEqClass - exonRangesCombined <- exonRangesCombined[filterSet] - rowDataCombined <- rowDataCombined[filterSet,] - } + if(sum(filterSet==0) & length(annotationGrangesList)==0) stop( "WARNING - No annotations were provided. Please increase NDR threshold to use novel transcripts") if(sum(filterSet)==0) message("WARNING - No novel transcripts meet the given thresholds. Try a higher NDR.") # (3) combine novel transcripts with annotations + extendedAnnotationRanges <- combindRowDataWithRanges(rowDataCombined, exonRangesCombined) extendedAnnotationRanges <- combineWithAnnotations( - rowDataCombined, exonRangesCombined, + rowDataCombined, extendedAnnotationRanges, annotationGrangesList, prefix) + minEqClasses <- + getMinimumEqClassByTx(extendedAnnotationRanges) # get eqClasses + if(!identical(names(extendedAnnotationRanges),minEqClasses$queryTxId)) warning('eq classes might be incorrect') + mcols(extendedAnnotationRanges)$eqClassById <- minEqClasses$eqClassById + extendedAnnotationRanges <- calculateRelSubsetCount(extendedAnnotationRanges, minEqClasses$eqClassById, min.readFractionByEqClass) + mcols(extendedAnnotationRanges) <- mcols(extendedAnnotationRanges)[, + c("TXNAME", "GENEID", "NDR", "novelGene", "novelTranscript", "txClassDescription","readCount","relReadCount", "relSubsetCount", "txid", "eqClassById")] metadata(extendedAnnotationRanges)$NDRthreshold = NDR + #if (remove.subsetTx) metadata(extendedAnnotationRanges)$subsetTranscripts = subsetTranscripts + metadata(extendedAnnotationRanges)$lowConfidenceTranscripts = lowConfidenceTranscripts end.ptm <- proc.time() if (verbose) message("transcript filtering in ", round((end.ptm - start.ptm)[3] / 60, 1), " mins.") @@ -612,10 +622,9 @@ includeOverlapReadClass <- function(candidateList, filteredOverlapList) { return(temp) } -#' combine annotations with predicted transcripts +#' extract the important row range columns and add them to the ranges for final output #' @noRd -combineWithAnnotations <- function(rowDataCombinedFiltered, - exonRangesCombinedFiltered,annotationGrangesList, prefix){ +combindRowDataWithRanges <- function(rowDataCombinedFiltered, exonRangesCombinedFiltered){ rowDataCombinedFiltered$txClassDescription <- rowDataCombinedFiltered$readClassType rowDataCombinedFiltered$txClassDescription[rowDataCombinedFiltered$readClassType == "unsplicedNew" & rowDataCombinedFiltered$novelGene] <- @@ -626,7 +635,14 @@ combineWithAnnotations <- function(rowDataCombinedFiltered, extendedAnnotationRanges <- exonRangesCombinedFiltered mcols(extendedAnnotationRanges) <- rowDataCombinedFiltered[, c("GENEID", "novelGene", "novelTranscript", "txClassDescription","readCount", "NDR", - "relReadCount", "relSubsetCount")] + "relReadCount")] + return(extendedAnnotationRanges) +} + +#' combine annotations with predicted transcripts +#' @noRd +combineWithAnnotations <- function(rowDataCombinedFiltered, + extendedAnnotationRanges,annotationGrangesList, prefix){ equalRanges = rowDataCombinedFiltered[!is.na(rowDataCombinedFiltered$TXNAME),] #remove extended ranges that are already present in annotation extendedAnnotationRanges <- extendedAnnotationRanges[is.na(rowDataCombinedFiltered$TXNAME)] @@ -642,7 +658,7 @@ combineWithAnnotations <- function(rowDataCombinedFiltered, mcols(annotationRangesToMerge[equalRanges$TXNAME])$NDR = equalRanges$NDR mcols(annotationRangesToMerge[equalRanges$TXNAME])$readCount = equalRanges$readCount mcols(annotationRangesToMerge[equalRanges$TXNAME])$relReadCount = equalRanges$relReadCount - mcols(annotationRangesToMerge[equalRanges$TXNAME])$relSubsetCount = equalRanges$relSubsetCount + #mcols(annotationRangesToMerge[equalRanges$TXNAME])$relSubsetCount = equalRanges$relSubsetCount } if (length(extendedAnnotationRanges)) { mcols(extendedAnnotationRanges)$TXNAME <- paste0( @@ -655,17 +671,26 @@ combineWithAnnotations <- function(rowDataCombinedFiltered, extendedAnnotationRanges <- annotationRangesToMerge mcols(extendedAnnotationRanges)$txid <- seq_along(extendedAnnotationRanges) mcols(extendedAnnotationRanges)$relReadCount = NA - mcols(extendedAnnotationRanges)$relSubsetCount = NA + #mcols(extendedAnnotationRanges)$relSubsetCount = NA } - minEqClasses <- - getMinimumEqClassByTx(extendedAnnotationRanges) # get eqClasses - if(!identical(names(extendedAnnotationRanges),minEqClasses$queryTxId)) warning('eq classes might be incorrect') - mcols(extendedAnnotationRanges)$eqClassById <- minEqClasses$eqClassById - mcols(extendedAnnotationRanges) <- mcols(extendedAnnotationRanges)[, - c("TXNAME", "GENEID", "NDR", "novelGene", "novelTranscript", "txClassDescription","readCount","relReadCount", "relSubsetCount", "txid", "eqClassById")] return(extendedAnnotationRanges) } +#' calculate relative subset read count after filtering (increase speed, subsets are not considered here)' +#' @noRd +calculateRelSubsetCount = function(extendedAnnotationRanges, minEq, min.readFractionByEqClass){ + filter = !is.na(mcols(extendedAnnotationRanges)$readCount) + mcols(extendedAnnotationRanges)$relSubsetCount <- NA + mcols(extendedAnnotationRanges)$relSubsetCount[filter] <- + mcols(extendedAnnotationRanges)$readCount[filter]/ + unlist(lapply(minEq[filter], function(x){return(sum(mcols(extendedAnnotationRanges)$readCount[x], na.rm = TRUE))})) + #post extend annotation filters applied here (currently only subset filter) + if(min.readFractionByEqClass>0) { # filter out subset transcripts based on relative expression + filterSet <- is.na(mcols(extendedAnnotationRanges)$relSubsetCount) | mcols(extendedAnnotationRanges)$relSubsetCount > min.readFractionByEqClass + extendedAnnotationRanges <- extendedAnnotationRanges[filterSet] + } + return(extendedAnnotationRanges) +} #' Estimate distance between read class and annotations #' @param seReadClass seReadClass From 44f76aba0f2889568564e7c18254006983767cfb Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 14 Apr 2023 17:44:59 +0800 Subject: [PATCH 004/189] subset transcripts are added to metadata --- R/bambu-extendAnnotations-utilityExtend.R | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index 902c34a0..ee9b45e1 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -85,9 +85,9 @@ filterTranscriptsByAnnotation <- function(rowDataCombined, annotationGrangesList if (remove.subsetTx) { # (1) based on compatibility with annotations notCompatibleIds <- (!grepl("compatible", rowDataCombined$readClassType) | rowDataCombined$readClassType == "equal:compatible") #keep equal for FDR calculation - # subsetTranscripts <- combindRowDataWithRanges( - # rowDataCombined[!notCompatibleIds,], - # exonRangesCombined[!notCompatibleIds]) + subsetTranscripts <- combindRowDataWithRanges( + rowDataCombined[!notCompatibleIds,], + exonRangesCombined[!notCompatibleIds]) exonRangesCombined <- exonRangesCombined[notCompatibleIds] rowDataCombined <- rowDataCombined[notCompatibleIds,] } @@ -124,7 +124,7 @@ filterTranscriptsByAnnotation <- function(rowDataCombined, annotationGrangesList mcols(extendedAnnotationRanges) <- mcols(extendedAnnotationRanges)[, c("TXNAME", "GENEID", "NDR", "novelGene", "novelTranscript", "txClassDescription","readCount","relReadCount", "relSubsetCount", "txid", "eqClassById")] metadata(extendedAnnotationRanges)$NDRthreshold = NDR - #if (remove.subsetTx) metadata(extendedAnnotationRanges)$subsetTranscripts = subsetTranscripts + if (remove.subsetTx) metadata(extendedAnnotationRanges)$subsetTranscripts = subsetTranscripts metadata(extendedAnnotationRanges)$lowConfidenceTranscripts = lowConfidenceTranscripts end.ptm <- proc.time() if (verbose) message("transcript filtering in ", @@ -633,9 +633,15 @@ combindRowDataWithRanges <- function(rowDataCombinedFiltered, exonRangesCombined == "allNew" & rowDataCombinedFiltered$novelGene] <- "newGene-spliced" extendedAnnotationRanges <- exonRangesCombinedFiltered + if("NDR" %in% colnames(rowDataCombinedFiltered)){ mcols(extendedAnnotationRanges) <- rowDataCombinedFiltered[, c("GENEID", "novelGene", "novelTranscript", "txClassDescription","readCount", "NDR", "relReadCount")] + } else{ + mcols(extendedAnnotationRanges) <- + rowDataCombinedFiltered[, c("GENEID", "novelGene", "novelTranscript", "txClassDescription","readCount", + "relReadCount")] + } return(extendedAnnotationRanges) } From 7e32425520abeadce806606e8ee7ff24eb7bf356 Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 14 Apr 2023 18:01:55 +0800 Subject: [PATCH 005/189] Add helper function to set NDR on extendedAnnotations --- NAMESPACE | 1 + R/transcriptToGeneExpression.R | 12 ++++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index b4c51d05..c360bde7 100755 --- a/NAMESPACE +++ b/NAMESPACE @@ -8,6 +8,7 @@ export(transcriptToGeneExpression) export(writeBambuOutput) export(writeToGTF) export(trainBambu) +export(setNDR) export(compareTranscripts) importFrom(stats,predict) importFrom(BiocGenerics,basename) diff --git a/R/transcriptToGeneExpression.R b/R/transcriptToGeneExpression.R index 9cf7604b..e91efca5 100644 --- a/R/transcriptToGeneExpression.R +++ b/R/transcriptToGeneExpression.R @@ -20,12 +20,12 @@ transcriptToGeneExpression <- function(se) { rowDataSe <- as.data.table(rowData(se)) counts <- rowDataSe[, .(TXNAME, GENEID)][counts, on = "TXNAME"] - incompatibleCounts <- metadata(se)$incompatibleCounts - incompatibleCounts[, TXNAME := "incompatible"] - counts_incompatible <- melt(incompatibleCounts, id.vars = c("GENEID","TXNAME"), - measure.vars = setdiff(colnames(incompatibleCounts), c("GENEID","TXNAME"))) - # GENEID, TXNAME, variable, value - counts <- rbind(counts, counts_incompatible[variable %in% unique(counts$variable)]) + # incompatibleCounts <- metadata(se)$incompatibleCounts + # incompatibleCounts[, TXNAME := "incompatible"] + # counts_incompatible <- melt(incompatibleCounts, id.vars = c("GENEID","TXNAME"), + # measure.vars = setdiff(colnames(incompatibleCounts), c("GENEID","TXNAME"))) + # # GENEID, TXNAME, variable, value + # counts <- rbind(counts, counts_incompatible[variable %in% unique(counts$variable)]) counts[, valueGene := sum(value), by = list(variable, GENEID)] counts[, valueGeneCPM := valueGene / max(sum(value), 1) * 10^6, by = list(variable)] From f5d4f173a3bcb5c75a04fcec49ab7565e8dcd5d9 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 17 Apr 2023 09:26:57 +0800 Subject: [PATCH 006/189] function to set NDR threshold on extendedAnno --- R/bambu-extendAnnotations-utilityExtend.R | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index ee9b45e1..54d7e9e4 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -778,3 +778,25 @@ addGeneIdsToReadClassTable <- function(readClassTable, distTable, round((end.ptm - start.ptm)[3] / 60, 1), " mins.") return(readClassTable) } + +#' Function to change NDR threshold on extendedAnnotations +#' @title Function to change NDR threshold on extendedAnnotations +#' @description This function train a model for use on other data +#' @param extendedAnnotations A GRangesList object produced from bambu(quant = FALSE) or rowRanges(se) +#' @param NDR The maximum NDR for novel transcripts to be in extendedAnnotations (0-1) +#' Output - returns a similiar GRangesList object with entries swapped into or out of metadata(extendedAnnotations)$lowConfidenceTranscripts +#' @details +#' @return extendedAnnotations with a new NDR threshold +#' @export +setNDR = function(extendedAnnotations, NDR){ + toRemove = (mcols(extendedAnnotations)$NDR > NDR & mcols(extendedAnnotations)$txClassDescription != "annotation") + toAdd = mcols(metadata(extendedAnnotations)$lowConfidenceTranscripts)$NDR <= NDR + + temp = c(metadata(extendedAnnotations)$lowConfidenceTranscripts[!toAdd], extendedAnnotations[toRemove]) + extendedAnnotations = c(extendedAnnotations[!toRemove], metadata(extendedAnnotations)$lowConfidenceTranscripts[toAdd]) + metadata(extendedAnnotations)$lowConfidenceTranscripts = temp + + metadata(extendedAnnotations)$NDR = NDR + + return(extendedAnnotations) +} \ No newline at end of file From ba7c084c25725a99729b1b6e88849e11f8bcc034 Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 14 Apr 2023 18:01:55 +0800 Subject: [PATCH 007/189] Revert "Add helper function to set NDR on extendedAnnotations" This reverts commit 9b865dfa334e22774a9e51fd829afd23b7e27181. --- NAMESPACE | 1 - R/transcriptToGeneExpression.R | 12 ++++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index c360bde7..b4c51d05 100755 --- a/NAMESPACE +++ b/NAMESPACE @@ -8,7 +8,6 @@ export(transcriptToGeneExpression) export(writeBambuOutput) export(writeToGTF) export(trainBambu) -export(setNDR) export(compareTranscripts) importFrom(stats,predict) importFrom(BiocGenerics,basename) diff --git a/R/transcriptToGeneExpression.R b/R/transcriptToGeneExpression.R index e91efca5..9cf7604b 100644 --- a/R/transcriptToGeneExpression.R +++ b/R/transcriptToGeneExpression.R @@ -20,12 +20,12 @@ transcriptToGeneExpression <- function(se) { rowDataSe <- as.data.table(rowData(se)) counts <- rowDataSe[, .(TXNAME, GENEID)][counts, on = "TXNAME"] - # incompatibleCounts <- metadata(se)$incompatibleCounts - # incompatibleCounts[, TXNAME := "incompatible"] - # counts_incompatible <- melt(incompatibleCounts, id.vars = c("GENEID","TXNAME"), - # measure.vars = setdiff(colnames(incompatibleCounts), c("GENEID","TXNAME"))) - # # GENEID, TXNAME, variable, value - # counts <- rbind(counts, counts_incompatible[variable %in% unique(counts$variable)]) + incompatibleCounts <- metadata(se)$incompatibleCounts + incompatibleCounts[, TXNAME := "incompatible"] + counts_incompatible <- melt(incompatibleCounts, id.vars = c("GENEID","TXNAME"), + measure.vars = setdiff(colnames(incompatibleCounts), c("GENEID","TXNAME"))) + # GENEID, TXNAME, variable, value + counts <- rbind(counts, counts_incompatible[variable %in% unique(counts$variable)]) counts[, valueGene := sum(value), by = list(variable, GENEID)] counts[, valueGeneCPM := valueGene / max(sum(value), 1) * 10^6, by = list(variable)] From 46d9167df37784dc1d9167f7b82e36feb1581c61 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 17 Apr 2023 09:28:06 +0800 Subject: [PATCH 008/189] export setNDR --- NAMESPACE | 1 + 1 file changed, 1 insertion(+) diff --git a/NAMESPACE b/NAMESPACE index b4c51d05..c360bde7 100755 --- a/NAMESPACE +++ b/NAMESPACE @@ -8,6 +8,7 @@ export(transcriptToGeneExpression) export(writeBambuOutput) export(writeToGTF) export(trainBambu) +export(setNDR) export(compareTranscripts) importFrom(stats,predict) importFrom(BiocGenerics,basename) From 82fe064d7902e97b48fd408c359a9f0ed3cd0aa5 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 18 Apr 2023 13:51:49 +0800 Subject: [PATCH 009/189] readClass warnings kept only when rcFile is made and not when loaded in --- R/bambu.R | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/R/bambu.R b/R/bambu.R index e61d0bfa..b7fe05d4 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -154,6 +154,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, readClassList = reads isRDSs = all(sapply(reads, class)=="RangedSummarizedExperiment") isBamFiles = !isRDSs + warnings = NULL if(!isRDSs) isBamFiles = ifelse(!is(reads, "BamFileList"), all(grepl(".bam$", reads)), FALSE) if (isBamFiles | is(reads, "BamFileList")) { if (length(reads) > 10 & (is.null(rcOutDir))) { @@ -170,8 +171,8 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, bpParameters, stranded, verbose, isoreParameters, trackReads = trackReads, fusionMode = fusionMode, lowMemory = lowMemory) + warnings = handleWarnings(readClassList, verbose) } - warnings = handleWarnings(readClassList, verbose) if (!discovery & !quant) return(readClassList) if (discovery) { message("--- Start extending annotations ---") From 50677f4027ec4fa7c487dbbb411e4755f4bf6fe0 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 20 Apr 2023 09:39:24 +0800 Subject: [PATCH 010/189] set seqlevels of reads to only seqnames in the reads to reduce warnings --- R/prepareDataFromBam.R | 1 + 1 file changed, 1 insertion(+) diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index 09cf5ae7..d4f7fa4f 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -42,6 +42,7 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, use.n # remove microexons of width 1bp from list readGrgList <- readGrgList[width(readGrgList) > 1] mcols(readGrgList)$id <- seq_along(readGrgList) + seqlevels(readGrgList)=as.character(unique(getChrFromGrList(readGrgList))) return(readGrgList) } From d17cbf19f63162d823c8fa7f07c24a65a3467a2d Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 26 Apr 2023 13:54:09 +0800 Subject: [PATCH 011/189] write NDR to gtf --- R/readWrite.R | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/R/readWrite.R b/R/readWrite.R index 44e98de9..d3bce597 100644 --- a/R/readWrite.R +++ b/R/readWrite.R @@ -85,8 +85,13 @@ writeToGTF <- function(annotation, file, geneIDs = NULL) { } else if (!is(annotation, "CompressedGRangesList")) { stop("The inputted GRangesList is of the wrong class.") } + NDR = NULL df <- as_tibble(annotation) df$exon_rank <- paste('exon_number "', df$exon_rank, '";', sep = "") + if(!is.null(mcols(annotation)$NDR)){ + NDR = rep(mcols(annotation)$NDR, unname(elementNROWS(annotation))) + df$NDR <- paste('NDR "', as.character(NDR), '";', sep = "") + } if (missing(geneIDs)) { if (!is.null(mcols(annotation, use.names = FALSE)$GENEID)) { geneIDs <- as_tibble(mcols(annotation, use.names = FALSE)[, @@ -100,7 +105,7 @@ writeToGTF <- function(annotation, file, geneIDs = NULL) { df$group_name <- paste('transcript_id "', df$group_name, '";', sep = "") df$GENEID <- paste('gene_id "', df$GENEID, '";', sep = "") dfExon <- mutate(df, source = "Bambu", feature = "exon", score = ".", - frame = ".", attributes = paste(GENEID, group_name, exon_rank)) %>% + frame = ".", attributes = paste(GENEID, group_name, exon_rank, NDR)) %>% select(seqnames, source, feature, start, end, score, strand, frame, attributes, group_name) dfTx <- as.data.frame(range(ranges(annotation))) @@ -109,9 +114,11 @@ writeToGTF <- function(annotation, file, geneIDs = NULL) { dfTx$group_name <- paste('transcript_id "', dfTx$group_name, '";', sep = "") dfTx$GENEID <- paste('gene_id "', dfTx$GENEID, '";', sep = "") + if(!is.null(mcols(annotation)$NDR)) dfTx$NDR <- + paste('NDR "', mcols(annotation)$NDR, '";', sep = "") dfTx <- mutate(dfTx,source = "Bambu", feature = "transcript", score = ".", - frame = ".", attributes = paste(GENEID, group_name)) %>% + frame = ".", attributes = paste(GENEID, group_name, NDR)) %>% select(seqnames, source, feature, start, end, score, strand, frame, attributes, group_name) From 232c1603500737b5860e7c68c51fdfef1104f514 Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 26 Apr 2023 14:29:45 +0800 Subject: [PATCH 012/189] Read in NDR if in gtf --- R/prepareAnnotations_utilityFunctions.R | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/R/prepareAnnotations_utilityFunctions.R b/R/prepareAnnotations_utilityFunctions.R index ffa2f48d..0cdfd969 100644 --- a/R/prepareAnnotations_utilityFunctions.R +++ b/R/prepareAnnotations_utilityFunctions.R @@ -27,6 +27,9 @@ prepareAnnotationsFromGTF <- function(file) { data$strand[data$strand == "."] <- "*" data$GENEID <- gsub("gene_id (.*?);.*", "\\1", data$attribute) data$TXNAME <- gsub(".*transcript_id (.*?);.*", "\\1", data$attribute) + data$NDR <- NULL + hasNDR = all(grepl("NDR ", data$attribute)) + if(hasNDR) data$NDR <- gsub(".*NDR (.*?);.*", "\\1", data$attribute) multiTxCheck <- as_tibble(data) %>% select(seqname, GENEID) %>% distinct() %>% group_by(GENEID) %>% mutate(n=n(), id=paste0('-',row_number())) if(any(multiTxCheck$n>1)) { # identical TXNAMES @@ -45,6 +48,8 @@ prepareAnnotationsFromGTF <- function(file) { data$GENEID <- uniqueNamesTbl$gene_unique } geneData <- unique(data[, c("TXNAME", "GENEID")]) + geneData <- if(hasNDR) { unique(data[, c("TXNAME", "GENEID", "NDR")]) + } else {unique(data[, c("TXNAME", "GENEID")])} grlist <- makeGRangesListFromDataFrame( data[, c("seqname", "start", "end", "strand", "TXNAME")], split.field = "TXNAME", keep.extra.columns = TRUE) From 0ae5c371ab57f24a96226859198e20005c43c432 Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 26 Apr 2023 17:42:51 +0800 Subject: [PATCH 013/189] Allow setNDR to work on gtf files that are read in --- R/bambu-extendAnnotations-utilityExtend.R | 24 ++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index 54d7e9e4..007e0c00 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -784,13 +784,31 @@ addGeneIdsToReadClassTable <- function(readClassTable, distTable, #' @description This function train a model for use on other data #' @param extendedAnnotations A GRangesList object produced from bambu(quant = FALSE) or rowRanges(se) #' @param NDR The maximum NDR for novel transcripts to be in extendedAnnotations (0-1) +#' @param includeRef A boolean which if TRUE will also filter out reference annotations based on their NDR +#' @param prefix A string which determines which transcripts are considered novel by bambu and will be filtered (by default = 'Bambu') #' Output - returns a similiar GRangesList object with entries swapped into or out of metadata(extendedAnnotations)$lowConfidenceTranscripts #' @details #' @return extendedAnnotations with a new NDR threshold #' @export -setNDR = function(extendedAnnotations, NDR){ - toRemove = (mcols(extendedAnnotations)$NDR > NDR & mcols(extendedAnnotations)$txClassDescription != "annotation") - toAdd = mcols(metadata(extendedAnnotations)$lowConfidenceTranscripts)$NDR <= NDR +setNDR = function(extendedAnnotations, NDR, includeRef = FALSE, prefix = 'Bambu'){ + + if(is.null(mcols(extendedAnnotations)$NDR)){ + warning("Annotations were not extended by Bambu. NDR can not be set") + return(extendedAnnotations) + } + + if(is.null(metadata(extendedAnnotations)$lowConfidenceTranscripts)) + metadata(extendedAnnotations)$lowConfidenceTranscripts = GRangesList() + + if(includeRef){ + toRemove = (mcols(extendedAnnotations)$NDR > NDR) + toAdd = mcols(metadata(extendedAnnotations)$lowConfidenceTranscripts)$NDR <= NDR + } else { + toRemove = (mcols(extendedAnnotations)$NDR > NDR & + grepl(prefix, mcols(extendedAnnotations)$TXNAME)) + toAdd = (mcols(metadata(extendedAnnotations)$lowConfidenceTranscripts)$NDR <= NDR & + grepl(prefix, mcols(extendedAnnotations)$TXNAME)) + } temp = c(metadata(extendedAnnotations)$lowConfidenceTranscripts[!toAdd], extendedAnnotations[toRemove]) extendedAnnotations = c(extendedAnnotations[!toRemove], metadata(extendedAnnotations)$lowConfidenceTranscripts[toAdd]) From 3f464e07a261502383316b5c37988bd8f9febee6 Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 26 Apr 2023 18:01:28 +0800 Subject: [PATCH 014/189] Allow NDR filtering in NDR quant only mode --- R/bambu.R | 2 ++ 1 file changed, 2 insertions(+) diff --git a/R/bambu.R b/R/bambu.R index b7fe05d4..cb9c71cc 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -183,6 +183,8 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, } if (quant) { message("--- Start isoform quantification ---") + if(!is.null(NDR) & !discovery) + annotations = setNDR(annotations, NDR, prefix = isoreParameters$prefix) if(length(annotations)==0) stop("No valid annotations, if running de novo please try less stringent parameters") countsSe <- bplapply(readClassList, bambu.quantify, From 3043a1d53549059aeb7307b50e95e2940801cdb0 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 27 Apr 2023 13:53:26 +0800 Subject: [PATCH 015/189] Add txScore to mcols --- R/bambu-extendAnnotations-utilityExtend.R | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index 007e0c00..73828750 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -122,7 +122,9 @@ filterTranscriptsByAnnotation <- function(rowDataCombined, annotationGrangesList mcols(extendedAnnotationRanges)$eqClassById <- minEqClasses$eqClassById extendedAnnotationRanges <- calculateRelSubsetCount(extendedAnnotationRanges, minEqClasses$eqClassById, min.readFractionByEqClass) mcols(extendedAnnotationRanges) <- mcols(extendedAnnotationRanges)[, - c("TXNAME", "GENEID", "NDR", "novelGene", "novelTranscript", "txClassDescription","readCount","relReadCount", "relSubsetCount", "txid", "eqClassById")] + c("TXNAME", "GENEID", "NDR", "novelGene", "novelTranscript", + "txClassDescription","readCount","relReadCount", + "relSubsetCount", "txid", "eqClassById", "maxTxScore", "maxTxScore.noFit")] metadata(extendedAnnotationRanges)$NDRthreshold = NDR if (remove.subsetTx) metadata(extendedAnnotationRanges)$subsetTranscripts = subsetTranscripts metadata(extendedAnnotationRanges)$lowConfidenceTranscripts = lowConfidenceTranscripts @@ -636,11 +638,11 @@ combindRowDataWithRanges <- function(rowDataCombinedFiltered, exonRangesCombined if("NDR" %in% colnames(rowDataCombinedFiltered)){ mcols(extendedAnnotationRanges) <- rowDataCombinedFiltered[, c("GENEID", "novelGene", "novelTranscript", "txClassDescription","readCount", "NDR", - "relReadCount")] + "maxTxScore", "maxTxScore.noFit", "relReadCount")] } else{ mcols(extendedAnnotationRanges) <- rowDataCombinedFiltered[, c("GENEID", "novelGene", "novelTranscript", "txClassDescription","readCount", - "relReadCount")] + "maxTxScore", "maxTxScore.noFit", "relReadCount")] } return(extendedAnnotationRanges) } @@ -659,11 +661,15 @@ combineWithAnnotations <- function(rowDataCombinedFiltered, mcols(annotationRangesToMerge)$novelTranscript <- FALSE mcols(annotationRangesToMerge)$novelGene <- FALSE mcols(annotationRangesToMerge)$NDR <- NA + mcols(annotationRangesToMerge)$maxTxScore <- NA + mcols(annotationRangesToMerge)$maxTxScore.noFit <- NA mcols(extendedAnnotationRanges) <- mcols(extendedAnnotationRanges)[,colnames(mcols(extendedAnnotationRanges))] #copy over stats to annotations from read classes mcols(annotationRangesToMerge[equalRanges$TXNAME])$NDR = equalRanges$NDR mcols(annotationRangesToMerge[equalRanges$TXNAME])$readCount = equalRanges$readCount mcols(annotationRangesToMerge[equalRanges$TXNAME])$relReadCount = equalRanges$relReadCount + mcols(annotationRangesToMerge[equalRanges$TXNAME])$maxTxScore = equalRanges$maxTxScore + mcols(annotationRangesToMerge[equalRanges$TXNAME])$maxTxScore.noFit = equalRanges$maxTxScore.noFit #mcols(annotationRangesToMerge[equalRanges$TXNAME])$relSubsetCount = equalRanges$relSubsetCount } if (length(extendedAnnotationRanges)) { From 21187ce99429455b2a7fb2d9b28d518655941083 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 27 Apr 2023 14:36:44 +0800 Subject: [PATCH 016/189] read and write the txScore to GTF --- R/prepareAnnotations_utilityFunctions.R | 10 ++++++++-- R/readWrite.R | 18 +++++++++++++----- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/R/prepareAnnotations_utilityFunctions.R b/R/prepareAnnotations_utilityFunctions.R index 0cdfd969..2436024e 100644 --- a/R/prepareAnnotations_utilityFunctions.R +++ b/R/prepareAnnotations_utilityFunctions.R @@ -28,8 +28,14 @@ prepareAnnotationsFromGTF <- function(file) { data$GENEID <- gsub("gene_id (.*?);.*", "\\1", data$attribute) data$TXNAME <- gsub(".*transcript_id (.*?);.*", "\\1", data$attribute) data$NDR <- NULL + data$maxTxScore <- NULL + data$maxTxScore.noFit <- NULL hasNDR = all(grepl("NDR ", data$attribute)) - if(hasNDR) data$NDR <- gsub(".*NDR (.*?);.*", "\\1", data$attribute) + if(hasNDR) { + data$NDR <- gsub(".*NDR (.*?);.*", "\\1", data$attribute) + data$maxTxScore <- gsub(".*maxTxScore (.*?);.*", "\\1", data$attribute) + data$maxTxScore.noFit <- gsub(".*maxTxScore.noFit (.*?);.*", "\\1", data$attribute) + } multiTxCheck <- as_tibble(data) %>% select(seqname, GENEID) %>% distinct() %>% group_by(GENEID) %>% mutate(n=n(), id=paste0('-',row_number())) if(any(multiTxCheck$n>1)) { # identical TXNAMES @@ -48,7 +54,7 @@ prepareAnnotationsFromGTF <- function(file) { data$GENEID <- uniqueNamesTbl$gene_unique } geneData <- unique(data[, c("TXNAME", "GENEID")]) - geneData <- if(hasNDR) { unique(data[, c("TXNAME", "GENEID", "NDR")]) + geneData <- if(hasNDR) { unique(data[, c("TXNAME", "GENEID", "NDR", "maxTxScore", "maxTxScore.noFit")]) } else {unique(data[, c("TXNAME", "GENEID")])} grlist <- makeGRangesListFromDataFrame( data[, c("seqname", "start", "end", "strand", "TXNAME")], diff --git a/R/readWrite.R b/R/readWrite.R index d3bce597..4f6087d2 100644 --- a/R/readWrite.R +++ b/R/readWrite.R @@ -86,11 +86,17 @@ writeToGTF <- function(annotation, file, geneIDs = NULL) { stop("The inputted GRangesList is of the wrong class.") } NDR = NULL + txScore = NULL + txScore.noFit = NULL df <- as_tibble(annotation) df$exon_rank <- paste('exon_number "', df$exon_rank, '";', sep = "") if(!is.null(mcols(annotation)$NDR)){ NDR = rep(mcols(annotation)$NDR, unname(elementNROWS(annotation))) df$NDR <- paste('NDR "', as.character(NDR), '";', sep = "") + txScore = rep(mcols(annotation)$maxTxScore, unname(elementNROWS(annotation))) + df$txScore <- paste('maxTxScore "', as.character(txScore), '";', sep = "") + txScore.noFit = rep(mcols(annotation)$maxTxScore.noFit, unname(elementNROWS(annotation))) + df$txScore.noFit <- paste('maxTxScore.noFit "', as.character(txScore.noFit), '";', sep = "") } if (missing(geneIDs)) { if (!is.null(mcols(annotation, use.names = FALSE)$GENEID)) { @@ -105,7 +111,7 @@ writeToGTF <- function(annotation, file, geneIDs = NULL) { df$group_name <- paste('transcript_id "', df$group_name, '";', sep = "") df$GENEID <- paste('gene_id "', df$GENEID, '";', sep = "") dfExon <- mutate(df, source = "Bambu", feature = "exon", score = ".", - frame = ".", attributes = paste(GENEID, group_name, exon_rank, NDR)) %>% + frame = ".", attributes = paste(GENEID, group_name, exon_rank, NDR, txScore, txScore.noFit)) %>% select(seqnames, source, feature, start, end, score, strand, frame, attributes, group_name) dfTx <- as.data.frame(range(ranges(annotation))) @@ -114,11 +120,13 @@ writeToGTF <- function(annotation, file, geneIDs = NULL) { dfTx$group_name <- paste('transcript_id "', dfTx$group_name, '";', sep = "") dfTx$GENEID <- paste('gene_id "', dfTx$GENEID, '";', sep = "") - if(!is.null(mcols(annotation)$NDR)) dfTx$NDR <- - paste('NDR "', mcols(annotation)$NDR, '";', sep = "") - + if(!is.null(mcols(annotation)$NDR)) { + dfTx$NDR <- paste('NDR "', mcols(annotation)$NDR, '";', sep = "") + dfTx$txScore <- paste('txScore "', mcols(annotation)$txScore, '";', sep = "") + dfTx$txScore.noFit <- paste('txScore.noFit "', mcols(annotation)$txScore.noFit, '";', sep = "") + } dfTx <- mutate(dfTx,source = "Bambu", feature = "transcript", score = ".", - frame = ".", attributes = paste(GENEID, group_name, NDR)) %>% + frame = ".", attributes = paste(GENEID, group_name, NDR, txScore, txScore.noFit)) %>% select(seqnames, source, feature, start, end, score, strand, frame, attributes, group_name) From 0c288a7283bc309c17f6187a785f1e1a2a70799a Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 27 Apr 2023 15:15:32 +0800 Subject: [PATCH 017/189] NA's are loaded in as NAs from GTF --- R/prepareAnnotations_utilityFunctions.R | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/R/prepareAnnotations_utilityFunctions.R b/R/prepareAnnotations_utilityFunctions.R index 2436024e..dbf4b083 100644 --- a/R/prepareAnnotations_utilityFunctions.R +++ b/R/prepareAnnotations_utilityFunctions.R @@ -32,9 +32,9 @@ prepareAnnotationsFromGTF <- function(file) { data$maxTxScore.noFit <- NULL hasNDR = all(grepl("NDR ", data$attribute)) if(hasNDR) { - data$NDR <- gsub(".*NDR (.*?);.*", "\\1", data$attribute) - data$maxTxScore <- gsub(".*maxTxScore (.*?);.*", "\\1", data$attribute) - data$maxTxScore.noFit <- gsub(".*maxTxScore.noFit (.*?);.*", "\\1", data$attribute) + data$NDR <- as.numeric(gsub(".*NDR (.*?);.*", "\\1", data$attribute)) + data$maxTxScore <- as.numeric(gsub(".*maxTxScore (.*?);.*", "\\1", data$attribute)) + data$maxTxScore.noFit <- as.numeric(gsub(".*maxTxScore.noFit (.*?);.*", "\\1", data$attribute)) } multiTxCheck <- as_tibble(data) %>% select(seqname, GENEID) %>% distinct() %>% group_by(GENEID) %>% mutate(n=n(), id=paste0('-',row_number())) From 1741376b45234ce9e4e2771345424867159136cd Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 27 Apr 2023 15:15:54 +0800 Subject: [PATCH 018/189] setNDR can now recommend NDR --- R/bambu-extendAnnotations-utilityExtend.R | 32 +++++++++++++++++++---- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index 73828750..85641973 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -177,6 +177,20 @@ recommendNDR <- function(combinedTranscripts, baselineFDR = 0.1, NDR = NULL, def return(NDR) } +recommendNDR.onAnnotations = function(annotations, prefix = "Bambu", baselineFDR = 0.1, NDR = NULL, defaultModels2 = defaultModels2){ + mcols = mcols(annotations)[!is.na(mcols(annotations)$maxTxScore),] + equal = !grepl(prefix, mcols$TXNAME) + #add envirnment so poly() works + attr(defaultModels2$lmNDR[["terms"]], ".Environment") <- new.env(parent = parent.env(globalenv())) + baseline = predict(defaultModels2$lmNDR, newdata=data.frame(NDR=baselineFDR)) + attr(defaultModels2$lmNDR[["terms"]], ".Environment") = c() + score = mcols$maxTxScore.noFit + NDRscores = calculateNDR(score, equal) + NDR.rec = predict(lm(NDRscores~poly(score,3,raw=TRUE)), newdata=data.frame(score=baseline)) + NDR.rec = round(NDR.rec,3) + return(NDR.rec) +} + #' Calculate NDR based on transcripts #' @noRd @@ -789,23 +803,31 @@ addGeneIdsToReadClassTable <- function(readClassTable, distTable, #' @title Function to change NDR threshold on extendedAnnotations #' @description This function train a model for use on other data #' @param extendedAnnotations A GRangesList object produced from bambu(quant = FALSE) or rowRanges(se) -#' @param NDR The maximum NDR for novel transcripts to be in extendedAnnotations (0-1) +#' @param NDR The maximum NDR for novel transcripts to be in extendedAnnotations (0-1). If not provided a recommended NDR is calculated. #' @param includeRef A boolean which if TRUE will also filter out reference annotations based on their NDR #' @param prefix A string which determines which transcripts are considered novel by bambu and will be filtered (by default = 'Bambu') #' Output - returns a similiar GRangesList object with entries swapped into or out of metadata(extendedAnnotations)$lowConfidenceTranscripts #' @details #' @return extendedAnnotations with a new NDR threshold #' @export -setNDR = function(extendedAnnotations, NDR, includeRef = FALSE, prefix = 'Bambu'){ - +setNDR = function(extendedAnnotations, NDR = NULL, includeRef = FALSE, prefix = 'Bambu', baselineFDR = 0.1, defaultModels2 = defaultModels){ + #Check to see if the annotations/gtf are dervived from Bambu if(is.null(mcols(extendedAnnotations)$NDR)){ - warning("Annotations were not extended by Bambu. NDR can not be set") + warning("Annotations were not extended by Bambu (or the wrong prefix was provided). NDR can not be set") return(extendedAnnotations) } - + if(is.null(metadata(extendedAnnotations)$lowConfidenceTranscripts)) metadata(extendedAnnotations)$lowConfidenceTranscripts = GRangesList() + #recommend an NDR (needed when users read in Bambu GTF) + if(is.null(NDR)){ + tempAnno = c(metadata(extendedAnnotations)$lowConfidenceTranscripts, extendedAnnotations) + NDR = recommendNDR.onAnnotations(tempAnno, prefix = prefix, baselineFDR = baselineFDR, NDR = NDR, defaultModels2 = defaultModels2) + message("Recommending a novel discovery rate (NDR) of: ", NDR) + } + + #If reference annotations should be filtered too (note that reference annotations with no read support arn't filtered) if(includeRef){ toRemove = (mcols(extendedAnnotations)$NDR > NDR) toAdd = mcols(metadata(extendedAnnotations)$lowConfidenceTranscripts)$NDR <= NDR From 8266e69b3e66719b72cee4e2805fd31e15164862 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 27 Apr 2023 16:03:56 +0800 Subject: [PATCH 019/189] Add documentation to setNDR and carry arguments over --- R/bambu-extendAnnotations-utilityExtend.R | 2 ++ R/bambu.R | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index 85641973..316cbe1b 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -806,6 +806,8 @@ addGeneIdsToReadClassTable <- function(readClassTable, distTable, #' @param NDR The maximum NDR for novel transcripts to be in extendedAnnotations (0-1). If not provided a recommended NDR is calculated. #' @param includeRef A boolean which if TRUE will also filter out reference annotations based on their NDR #' @param prefix A string which determines which transcripts are considered novel by bambu and will be filtered (by default = 'Bambu') +#' @param baselineFDR a value between 0-1. Bambu uses this FDR on the trained model to recommend an equivilent NDR threshold to be used for the sample. By default, a baseline FDR of 0.1 is used. This does not impact the analysis if an NDR is set. +#' @param defaultModels a bambu trained model object that bambu will use when fitReadClassModel==FALSE or the data is not suitable for training, defaults to the pretrained model in the bambu package #' Output - returns a similiar GRangesList object with entries swapped into or out of metadata(extendedAnnotations)$lowConfidenceTranscripts #' @details #' @return extendedAnnotations with a new NDR threshold diff --git a/R/bambu.R b/R/bambu.R index cb9c71cc..c7c06206 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -184,7 +184,9 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, if (quant) { message("--- Start isoform quantification ---") if(!is.null(NDR) & !discovery) - annotations = setNDR(annotations, NDR, prefix = isoreParameters$prefix) + annotations = setNDR(annotations, NDR, prefix = isoreParameters$prefix, + baselineFDR = isoreParameters[["baselineFDR"]], + defaultModels2 = isoreParameters[["defaultModels"]]) if(length(annotations)==0) stop("No valid annotations, if running de novo please try less stringent parameters") countsSe <- bplapply(readClassList, bambu.quantify, From e159b480af524014b25db3ede29fd8a3f60f8e8c Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 27 Apr 2023 16:04:25 +0800 Subject: [PATCH 020/189] Update test cases to include metadata and new warnings --- ...onGranges_txdbGrch38_91_chr9_1_1000000.rds | Bin 3876 -> 4512 bytes ...rectRNA_replicate5_run1_chr9_1_1000000.rds | Bin 4688 -> 4500 bytes ...rectRNA_replicate5_run1_chr9_1_1000000.rds | Bin 4804 -> 5320 bytes ...rectRNA_replicate5_run1_chr9_1_1000000.rds | Bin 4700 -> 4592 bytes ...rectRNA_replicate5_run1_chr9_1_1000000.rds | Bin 4720 -> 5148 bytes ...rectRNA_replicate5_run1_chr9_1_1000000.rds | Bin 4720 -> 5220 bytes ...rectRNA_replicate5_run1_chr9_1_1000000.rds | Bin 2100 -> 2336 bytes ...rectRNA_replicate5_run1_chr9_1_1000000.rds | Bin 5544 -> 5420 bytes ...rectRNA_replicate5_run1_chr9_1_1000000.rds | Bin 7616 -> 8104 bytes ...rectRNA_replicate5_run1_chr9_1_1000000.rds | Bin 4452 -> 4336 bytes ...rectRNA_replicate5_run1_chr9_1_1000000.rds | Bin 4452 -> 4332 bytes 11 files changed, 0 insertions(+), 0 deletions(-) diff --git a/inst/extdata/extendedAnnotationGranges_txdbGrch38_91_chr9_1_1000000.rds b/inst/extdata/extendedAnnotationGranges_txdbGrch38_91_chr9_1_1000000.rds index 0b70a66f129249bcb7f36157e4146cd60a76f5ed..68b9c92a3c52bb95c49ef644da8101c5cccccc1b 100644 GIT binary patch delta 2027 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 literal 4688 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 SJKEbmFb#_W000000a;pBX7Ymo diff --git a/inst/extdata/seOutputCombinedExtended_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds b/inst/extdata/seOutputCombinedExtended_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds index 479daea5fdd166b3adbce17e7bae500d60abdefc..d6254f4abf5549ae720a0841b5c84b58e5b94198 100644 GIT binary patch delta 2836 zcmV+v3+wd6CCDj|83euI6p67Ny$OFCOh@9)_&%?~Zx*?sSqX6=_2w8m#%8Vx{UgZ9 zKsLHIHsx1}63ZXoAx(+vzhQNuJ!S(N4{mLBwrhoMfSDZBC|tM3hq4-OQgfWaMcEG* zc~*cyi;ibnSgV?!ccEzr^h1PB9-pAl8d4s}xHsX(&P8=Be}4$6+#ut$YG;2L%8gKS zwMzYK39-r1fjRHRiOP&|m5dwIviJ+Uu^Qx_!1YD{RTD1t-?vrHp75Kn?=iS8|;Fz2&` z10x2*?0~{X$oBiJziHNLy+fa>d1St*#X&3`MM90^Ibt+!wLo{xG?VAF4I#l}m#A6@ z!0bqwy|K%o=7|1enI+^1d9lVmI=kLoWqJLMT`!C_)o;UmQXgjl;RJt#wJejAo@7mg zA9=xM=H4;0M1Hv;ANPtmq=An&qUgonvve1m;M_RyWFQ_KU#c=TIH@!MS4ic2N>FlR z7Nw76?|@bmuqQYw{bVhVsICy$F+35@8T=`Pgt-Z8qva#z}Z#}VN;9eaO^o(MjjPxx_pRX;^* zJ^9s#G^-bjAEhOs%Hk8wgZ+lEvmcsNv}*YqL8}ze7?LOGML9MnQ1wCr)LVjMHD=-$ zs2aCug)l>PL#(U8bA2Q*j6p5%8x-NnEGS=KSdPB&OcJU^b|E%^hcXu~lg4L;X`1RU z%^QgTn&gkz=2(B{+%7y@Bqb2SMeSNU#vOW{|nhanw^e(*idLO8c=|$k~{w7B;ua-bTKyFr?oA>Zh=R24M7hV`uu)HAI5JpNd z9bdYz!H6|!N*^unb+{J!Fzo5D5$++u!%T_cug4??!ANtZ_r!jxZN1Ba=M@M*cs)qv zf@`qob83IsO>qkf%2C;bu2Y;de; z*R^%b$04~A$V~i64E{F3sE9WE_E1T0GOJ?zf>4l!{}-PJMDh0d+2APffjLgIEopx_ zuO3e^f{W0+{eXIO{1WPcv{F`=DN!|QBpU?Q_5IfcJlly2mG4FWS1kwG-Hp}x8drpX zqy~ct#S5V0CbcL~>u?mwe^xxur1)i(WaMZp<@X7zm&GVM>R!x`FRaVcV;g9pOOW!O z0iQ6j_a{_fiMBGYA$Xh+b7sXdWpjU!(!~FCIfQzpAkZ0!=CYY=`RB^3q2wp$_s}fQ zTUXCV&G{$#{?c>t;ASI*mfh>$dL$DUuxTU+@ur1{KTER=bF?&Va?8%>zBOkc@04 zD#*uiq&Ax(ARn`Q7(Kk)7#A}pSIUitVq&Cf^I$J%%Up{RW-!@C6w(c1|DS(ScZ#nVdB&U zF4P8>+hG!L`Ithk{%76^BzwOcPkypA$`Y|O}L0mDBmJBk`T z#%#AmT?}1Nn;Ae~0s4D(_dQXs@o-5;JK^4styZvp5)i2Y)vmQA!Q>ZJKpsqdmw77e z2F?6|#1$I^b)mAXMU#KQ^aVJtT;X#YJayS5Qu#w0mE<7&E26ZhlT&U>>hmT};`F%A zr$?7d(cXjFFZVU;SmD`y2pE7Q7-$C*+;Pp23a?vYrrGP`-g)=bbazy*JU!_@W@78REUm4TAx+(qbfeb2U#@4!f0mjE(tndYD z8+o%3b54*CClM+znkrLID8qaafSW&9w}Ih3_)pTd2ax;CeI5M#A%}~81j=3vfn3pA zm(w6Wpp`pjp?-gA0R4Rht_Bl3dU?D#RgF;Ym7%P~F2ePIkQQ-0{h{WWnY?h?W6>CY z!y&&#o?81@Vt>cPOlW*N%)(w80`W=B+Y*-Exwig$we)F$eWB&g{Jqucv#Zu|mbSw< zbz!hwymd<7sF1i1 zKiop(x<4|)q+@=bK!zGQ#MQX)tFkTdzjMJS&ICS4Y+$%^{65sPhZpKOi!-^}}Lk_y%!w@5re6lT9g zYobJe-!!{-`Ne5e2Xovh6KG&jlLvExSx752ZPHMWZCFQE#)GV)M># zcxJE4?5kQwxMm&*{qZaGOQ7S-k4GY}Ueinu;u!U(B(=}Zravn!dh?=4QS9iyD&|>5 zwSvOI9ali&a~@f3muSy(WPASl_K*XHgLVdFbse^5p&#SA)`m4l9Gb96k`{khc;l~h znXF3l;`W*pDnr*sv%FV8l*%DOA?-9Sbvj{at6jl>+qj6;KD2S9V28c$)>KF0-G}zI zztl5Yuy&j4bZH14=9v}P02H%YY|NhxogTnw6H<(~OU$GQoT}F2A_h1%vm&Y_#ntqB z4E)J1Z{2V9UpCYpcO;yob`LhgX$FpdJTlFx2pvr70?V{)+=;V{Z~#3)R8 zSTd!eVyCM-*BQofCVqE-`%U~C&3Ev0oMg#T#+i+}V&*KlCiSLDilGylKu8d8B^@rjj{(RD7`x z`;<$!YObH6s*U$!(A1)^k(X-lVi+CfdEtU~a$v7q^qO|df(So|HV)9|hMPfgdnj)X z2t7Lu_NvzlO2>or)ka_jMq5Zxt}2@IhUCQ2Fo0yBM5$0G;f*arRcq;HC^--LRHHUh z6R=^1osG)oKL|VGq^*BLNkt$sioS!^Z(lq4FzYSDxV1F!KCz*eHOp`+-ANnN3+<%Y6e%-t7|UkO^o- z1(JZww(XS_{lB&-Z@0Lp;i+%6C5tMQpchdT+mQB*Yf9m=7nXm@&bD6G$RjQ(NKk4C zmUG}HSM2gI?iq}}X7iW=K{RO;65&_@za>HnspQ0@4QfX`@ZoZ?FSbp75ApXJY1rik zc_ri|TT@6vemH+e$nCrzMS>Dsi%pc(Juu@h8rf|VvKRGt^jtve3hg6KooTtH^Vq(g zeRU<;LV1|+&oO`L8g)DR21RGup{PvOSpUy^^WF?jUnv0Y)_Q_))B}m3ze=_-_LQ~q z;|Ci-Tk6=EyaN+9uf1`#(ew&CwJ-qZ^@0-ZZHqwSWwx;$5J3GM z{G+u&!|{ACV*&Zh#FB$}(!!s%8?+X@C=*}B+x9N{q8op)a3mpKcVRcDT2P@~_z&sb z%6rU@+n+@N$m^c~aX_J*D8un6L;6qUIX2tZU76p^Q~3bmVr+xJ$W0MJcRUnxbs(Bw z{Dk^N{FDyzaU`9lJyPfJpVp*dPckmNQOsss3p>Y7uB3=ucIKS6^&qJ2H5m z`WF}tfm(m!;yTKFOa7}Jg1BaGw^DOTeHPvOWi z>m2(EgyNBjV!G>)9w110F9O?zKHpl^m}9%THvjT@`DrFG8V<1cLJF>B!~d(N40me{ zp%H&UsIt*+>}7fb6i*8+^2c)b5-gTWEl&Fy^C2pO;{zK1UD{TOt zQ3s>O&U+-JZy7$A;x(-oZ{y*tMz7%jy_tV-WQ~FNR8i5DsrNssr9{)iPaLw(pcfp~ zCksb!foKlHrbyoGwqRV+T*&oZHHsdCUrV+ygSpNa6AnahI?+;zi2|2My$!1r_j6o3 zACo{hRygC8Jn{5E3(!2mXqOFXI;M=vl?A=f&OXDF?#$?@@v893Z${W?r3P@(({g_p z8Df_;*b48^@^_v(bmX25cnNr&CX&9p`t3)V>-7^hD)JbY;p%$z$pQSB2~-3*+L4-+ zuy}E_k)E5NGj;wJz0guAZ$K*P=d!Wd_s&kWjC*}DI$)_E^-G}9Q&d5T;E6ca`zu~0 ztMJAgP{W86mf%2Q?(`ccuBRtJ@lSu96Yg(7kH&ULg%VO;V|YK#Q$DviZBP|jRp%Gx zXcwX1l|$);TVogPHtsYTCFjO&l)bZ-G$TFl>c|wXHSznq5tgE-D)b2U537HDPYO@q ze`Fhh`R&PufVJugoGRH;9XdYI@d=EfmMeSnYDZ{9Q$WWKx@`WiXQ}P*Mh79Bd?r^} zk(F{;Un(L6Z&fCN5B)Zu*u@+QUHFEI5fFxMe9{oq;hIz~9_|9=j)43KF6ez9;0b*P z1@SZafS_3IH{^u6kxo3}yoo5Sr3 zjs6niqHX`!a6%h<>N##rq;}y6J-a}{!2p)eIlWv&ODz-xr3~=+EYD_*_o(Ve^f*?( zuqf+ZAoOzihHNNkb_PZ9Qh08*HEnsgZni*N|2>5xG*YGt_wo45!5M#UICB)aJ5a^{ z)iL-jfso5|z+-cS2mj@P4Eg)k?f>0exY0vVRZ4q@ro#lc>V={8HXJ%-2qWi%<4(@; z<<-1#GG-dEGYORh3fNjaS&crMKG5OBLIW*xj-ODRJqhB{fkm|?ak06Uc)&3uDQF?w zV0zmHKjW_TaJ+;MXMTIMBC{uS&(zTdL>(~`SQpb>32Z5%u}? znLq+Wi#A0uboTdZ@fW+@7BC*Cf`8(xzE`Bwl+>wJN9m5Q8pg+NVq4?3wb`M&gNp#m l12-Xz005P7bg=*dpCy>a0ssV&r1?HD4T}N*00001Sz7q1fouQ( diff --git a/inst/extdata/seOutputCombined_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds b/inst/extdata/seOutputCombined_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds index 829071bcfcccfaebaa3d454de6bb1dfaf1a75f0c..c682d7c1058cbca56fc2dc1277636b72c497cfac 100644 GIT binary patch literal 4592 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 diff --git a/inst/extdata/seOutputExtended_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds b/inst/extdata/seOutputExtended_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds index d334d7f4a81f6ef7ae26a1c1a668e9a6d34b2337..1d96be5e94b54ab963415eddb5f0acfe25a68c8e 100644 GIT binary patch delta 2662 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 U05e#Ex;`)sivj=u00045TD;mFiU0rr delta 2231 zcmV;o2uSywDDWhZ83d0*5;L(Ky$OFfgQ-mFPyd-@D;{&HIwOJDxe>CFQE#)GV)M># zcxJE4?5kQwxMm&*{qZaGOQ7S-k4GY}Ueinu;u!U(B(=}Zravn!dh?=4QS9iyD&|>5 zwSvOI9ali&a~@f3muSy(WPASl_K*XHgLVdFbse^5p&#SA)`m4l9Gb96k`{khc;l~h znXF3l;`W*pDnr*sv%FV8l*%DOA?-9Sbvj{at6jl>+qj6;KD2S9V28c$)>KF0-G}zI zztl5Yuy&j4bZH14=9v}P02H%YY|NhxogTnw6H<(~OU$GQoT}F2A_h1%vm&Y_#ntqB z4E)J1Z{2V9UpCYpcO;yob`LhgX$FpdJTlFx2pvr70?V{)+=;V{Z~#3)R8 zSTd!eVyCM-*BQofCVqE-`%U~C&3Ev0oMg#T#+i+}V&*KlCiSLDilGylKu8d8B^@rjj{(RD7`x z`;<$!YObH6s*U$!(A1)^k(X-lVi+CfdEtU~a$v7q^qO|df(So|HV)9|hMPfgdnj)X z2t7Lu_NvzlO2>or)ka_jMq5Zxt}2@IhUCQ2Fo0yBM5$0G;f*arRcq;HC^--LRHHUh z6R=^1osG)oKL|VGq^*BLNkt$sioS!^Z(lq4FzYSDxV1F!KCz*eHOp`+-ANnN3+<%Y6e%-t7|UkO^o- z1(JZww(XS_{lB&-Z@0Lp;i+%6C5tMQpchdT+mQB*Yf9m=7nXm@&bD6G$RjQ(NKk4C zmUG}HSM2gI?iq}}X7iW=K{RO;65&_@za>HnspQ0@4QfX`@ZoZ?FSbp75ApXJY1rik zc_ri|TT@6vemH+e$nCrzMS>Dsi%pc(Juu@h8rf|VvKRGt^jtve3hg6KooTtH^Vq(g zeRU<;LV1|+&oO`L8g)DR21RGup{PvOSpUy^^WF?jUnv0Y)_Q_))B}m3ze=_-_LQ~q z;|Ci-Tk6=EyaN+9uf1`#(ew&CwJ-qZ^@0-ZZHqwSWwx;$5J3GM z{G+u&!|{ACV*&Zh#FB$}(!!s%8?+X@C=*}B+x9N{q8op)a3mpKcVRcDT2P@~_z&sb z%6rU@+n+@N$m^c~aX_J*D8un6L;6qUIX2tZU76p^Q~3bmVr+xJ$W0MJcRUnxbs(Bw z{Dk^N{FDyzaU`9lJyPfJpVp*dPckmNQOsss3p>Y7uB3=ucIKS6^&qJ2H5m z`WF}tfm(m!;yTKFOa7}Jg1BaGw^DOTeHPvOWigd zj#vmWhW!XzR^IEMNWph8jB6BUp1th!|4afJg=r?Azp5pY;Cg3pHLzB3KkNgO5ja0}VqfpjRcDsoTASP^m?iqz&D-U%PAy zmQ^d$)}Y-Uu?}C$-|grl9nXWh-Bo`PSGDM%rAo$ra&6Xt!;)OMUm9|CNjbOGg4qkx zpKHlRF<`~Q_dSeCAoI}zbYO+%(s(EW5G@VWTzYz%$+suX_DbnJ1!X^o#X6JZjy%@d z^90k>@42y_i025WK=vI%vdp38tVkyQM&cziEsQ$=lpdFVk}o9Hn+XR~%PoHkP2*>r z@wx36i{c6CGRWW{j_}7**Bkc~WMz;u>3p>9*D1o?`Yib5AA;+$GiJ@$?ZuTPLNW@e z)OenqGRlp7K9knZ0sk6oD!=Q>E$*tr$JbX?O1fO64WXN!Lt{bG51$DD`GIf__ho@Y zwlTjbGC*9hNYDO!!DER8XcT`O?_5R67)!*G4XlU;hlJsq&Ijr-=#sBtQ2|PaRmVV} ziS#Mk3Mx@qDCLVIO^vRxe99!1qe$T~j61MN{?f;~jrD?>F7N$T&ru z%Lpt1;nLGEa)uR=)+-J(Wg}I(ASiGh4W+RqHT1c>GpeLj8F%toRjUhKPh;BT zQ@6DtGTu>KqgR){X^il3D0062_Y(fA5%Ou2}0su!nudqHa4T}N*00001 FSz6RdM{NKA diff --git a/inst/extdata/seOutput_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds b/inst/extdata/seOutput_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds index 8fa263608a9d850d8d787ff46c6ac17bf10abd63..990653dfae9cd6d10700a3778b02dc10ae216c47 100644 GIT binary patch delta 2735 zcmV;g3Q+a%B;+WN83e4!6eh79y$OFCOh@9)_&%?~Zx*?sSqX6=_2w8m#%8Vx{UgZ9 zKsLHIHsx1}63ZXoAx(+vzhQNuJ!S(N4{mLBwrhoMfSDZBC|tM3hq4-OQgfWaMcEG* zc~*cyi;ibnSgV?!ccEzr^h1PB9-pAl8d4s}xHsX(&P8=Be}4$6+#ut$YG;2L%8gKS zwMzYK39-r1fjRHRiOP&|m5dwIviJ+Uu^Qx_!1YD{RTD1t-?vrHp75Kn?=iS8|;Fz2&` z10x2*?0~{X$oBiJziHNLy+fa>d1St*#X&3`MM90^Ibt+!wLo{xG?VAF4I#l}m#A6@ z!0bqwy|K%o=7|1enI+^1d9lVmI=kLoWqJLMT`!C_)o;UmQXgjl;RJt#wJejAo@7mg zA9=xM=H4;0M1Hv;ANPtmq=An&qUgonvve1m;M_RyWFQ_KU#c=TIH@!MS4ic2N>FlR z7Nw76?|@bmuqQYw{bVhVsICy$F+35@8T=`Pgt-Z8qva#z}Z#}VN;9eaO^o(MjjPws(O$Y*%5 z>Q|fAxnR%~JMY}#Nv5jwFddbn*Eg1Sme@C*m62lx{`gTOaoroxS0_;VjOsJ9Y>sD! z>cocn?r>YAniI++ym=|awX)G=@gD?N!cE}EQu@9PI+UZQ{=I>Twe*w_x6Z)LS(6}H z1&Eyp_WgDz3ip3IT}ztbx5(CWr`lGu2#w5WyzBsFeEo79{eC`Cva% zfpC%#6&1%Jy`S7PDG29B>B;^h2PUI8nE~N!j*$4MfvueIDSYOm;z3gT>pM!%1a838 z6q~oLj`A{=PZtNI__CioPilW+H zH1&2ik*^YGq}eeqa#a`1 zlC6C|QKNr-bE_M?O=ZViIZqo|WJab8l%grOsO@Tfum!Vi5-c4z1nZT-kWn;#3l0yR zw)W~VicwxZB7Sv#{((~q2uK!79?RI6K0qqsISuuIq)%km6g2ACi8Ny9;)#2hW!N^e zRRRDbqsX^zjPc9#x!-P{sx;2#L5qjtLKV<8j}m`4%Xrk3r{`Vli@ZDk4`)$~=o1!9 zYXHz}99E$tgvjt?5?F(EK?l5=TB|FO3U%hVf-+5~)oR?%mt)xsO>DTL0i@Dkjtq zQXgQPiGAEp*4%bM$sEomB+`>B4`N0W-4P2O<3CLV_B?4A?0UyCt;X!7Qo} z>M$h{+iwzc$$D*l#rkAb!G_7f$W{QF!gUZnjB3%s^&g@VPO52r9c#co9_ zB#iGk?A=1vqYjFGE;Gvzr}TeA{n?Wz{s%`_Q-@yAWe9JVrid66CHQ~rgOg|2NBG_zM>U8sLa(zHnSLv!ar zXtpSmt7m{1n+>fWOTq=^rRfLZ63PsX%u&$(-HEx;?huhPFIq|m11s%n;hV+IgT}Ue zf|Ldqi-NRsKPRoJ8_B8;MWt(MzKv{cY*aw_m6BT!9lqxKtebp(7;jK>0&J`>ZKe)d zZ`Pyv7`*)=?HQ`^BGP{`k?}UD@@_%rVXQvPaC28(wRo}$Y0kOpq+E30vxte|Czu!4 z1FK{q>^u9*1J@inr`S~g3}E$+{RjkL^a?;v>spsjZ_2ADR%j4N5dSFBb&GUoz4Qjz zwgkbnq1GM`>2VFCNUzgmN{EuM%oQ!810_M}{sx|H`5zL-^k{!AhUd0|srDTjBEL_x zxc81kit$=ajNz(R)08GD(J9B-qU;ib?iZ3&Kv^u?|9R2enXD)6CW#)d{G2pi)B7-K zruF6hgIw)0Fl6nE*=1p>=A7e@j(d(&jDQVpP3<)*_axU4JS;5XYnnsG8_E^cNMztA#?>>F*0iYTCE233zjuvg{I#M&hi8B0M7V zPT%|&V09aSxp?~wM4vkSzB}V)Ocl4w^slD&|GuY7oHkRgyT z;6VFhUwT5P>ig6CHmz3U1yn~ja^Eez(x@`9!{SjE$LKMQU_i#^CsJO&y(E=1*Q8s6 pBSVEOwZ0z!006SwF+BhQz9`Ds0sumwy1PCw4T}N*00001Sz6^yN|yit delta 2231 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 FSz4-3O3VNN diff --git a/inst/extdata/seOutput_denovo_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds b/inst/extdata/seOutput_denovo_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds index cd01ca72905d8621bc97f76c606e15eb3fa4c98d..3769420095ba286dc99f03db4793da3df8d4c5a5 100644 GIT binary patch delta 1565 zcmV+&2IBd&5TFu}83Zvu2;{LH0t0`grc*eR((13nXZ?hUk&9^Jv}>Dq=!g&ztUP~Z z1|^|9<98w(1>TTjS019(kS5C4Ci-|N!ZEYm*`dhw5r>!2bBY!0uM|2 zD5O}k!7?Qz9jK8uf2_0qi959?uUe9Sum!#$nJnvD90J+(T9b+Qst3kTxo>|xD#hwd zT}WH0CV9TRL-KT`pHiG69W$-TxY;&;T1P)>QdJmg*7`gL5VSKum&R3<_r^gKi`bHO z7)EqAE0Nnqy6aFt3rUn-*|gLrAJzRvHZDO2vbcb35rF$wADW)!B`!$aCjW-KQOZx< z7j8Iw1zWH{oIKRtQoJ2}Yr%gsD9hje&06(*$bI(l`WleV#NaS4vC>_9V+XFX{%Zhj zP;euoV`d0k4Nz?oNmq^zO^7XuVhT5uHw7kS1g%)$tvOh*&F#ACqcN2bZs`J+qX9a@ z34$%={HGR7J(;AEE5PMr+6IYM>QN>K5|=|%ikIs)=%sovK(1oTUjKi&sG6!0%}h7w zYY2pLUyzgT7D+yX!Am*7erG`Yw7%nt1@C)#ZY}cpGg}qCG7B`tDS!$_^QX=gd(HkR z9xl>x#+AJ4jidz=tx1)6A{HkNu!ZscP(Z~MKw2=3gXj^Y+;qC$CoLhO>Kk1*i>G!G zeUAGQQljnodzYE;-kyK#1$j{d4QenS$BByjnENHbWgc>UlgTLUExaR6ZIC3v46q#>#ss_T%BDIc`i=wxUO*0} zmkE9XpWWF$vw=J+Q4$mL-%#<}DF{3|ee(ez^_G@S%Sg%Gp`14#vsR$_5@6 zAwapxBvD#=?-uY?EA=MF*lF^x(B|4J{_1jD_Z=ez0&+Ua>bB_$O7!^^e@eFgczr-7 ztV~{Dv#_d*0u4FsHqQ%TKu=Q-^({x=nJwQ9F;@qOnQ)qMer;B2q(0 zMZ+$K8cDeo+|+;BC|pT|w>}DZqXJ)Vbi|s_%ap3p`%wZ#w71XplNsl7CCRwmZSldh zWEYg&&B4Xf!@g;18^&JTj(SDqx9K623SEIcHB z8pkr@?28Z4Hx5#GE4K!~9RSybyUDQG%(b(<1y{=2(=gyHo@`P8a{oE5*R)Qk;L)e>Rq(TO5nA|FXTU*(OXE`XB{*Q_1O48$b(-Y9+MdmWT zs0x2W8|xHtd-)Hy#sKpI2dsk&wl=7FR!Du-rcQYpBnqevx-X*M_$0V9Zd+8u<{wGh zGoB>V)p|{YpY1jpQEI|0Nxo9X*VGqP=te#7d#dTdW1#Ru%%1!)kdQw=QAHE_=FK7pA`DQJ3p>b}ThIwTdBY1!Iv-J21aDQL{zF4L5P*iXB1YjprLzfKq zAN{Bj)fm=a?@6=wUk|>!gqqh}@Yjmfj1BS34x^w#Myum#6~g^X9qiy$B%|LG@K<`+ z`>@iLvIt36=nvu|{|m_Qm%bjZ7bhC@r#sT0OSe5QbGiVAhR@&t0sIlbVgLZeLYoc2 PJ}?c70ssI200CKA>6QM< delta 1327 zcmV+~1`f$;@MH}tc)T?BA?Dc-8~Qj%-8{cO4( zj12_&!KVPmD?Y7?ZO_KDFV$C3RAl#IS2E&X^aBRUOd%BwnyI*d1DT#bzkN7E$&n~p z*w8ivB{-6JEE}b;tlPv2RQcFvs!YUjWu_K61SROxBu2-3dXibJ^Grq_B=CQNKw2D)J!wXR8}kH7 zR{-Zf#VzB+rE7{JZ%GtBro4s#$=WisCh6$t*rj@DCXDkI>&9aID^UG-ww0k2t74w< zA!1zIwfhvngMevn-o2)~$DMz^M-tz|U0yjCmnb~1)BPCY$xZipI@U%@iIwZQA@#(-KBml@ER<#@p+va&b9C&=V)G_SQ$*bWDZ1Q+KobJM#~LrFMs-n=qA4D4TIo%mFHUYd}LKHvr2!GqvH<;wC9~oiYyt= zt*b*87m4!B4KLRnr1pYkUKUuvf{6=;9Ke0T?mbr-RP%H4Xr~r7zJ#5&Sg|Z(tYM@H z8Z~2OS0>;ccz?WrS*i77PM_0&L|2X^Ps{w*dW<3LLItwd-OPF4@X~4UaKL({cmF`S zhVXb6-~5NQrYC>gxHwn6>O9;L&Nbenyw>j&T*<9a=4q_{FGStblUhummsO!s7Dnr1 zi6s)&ePy4*sB0#_z@2KeqQ8Oi?JvK)nlNI9ArlxD0_{tkqqRz;yq$8>(@%5EwUnEA ziag4Xq}Tej5*p)6?lvDJy@R_(5UPN3tyXi0#)tb5h&zAA{AcN8E8(tq3$d32IU&-- zN_8e%SH|!`IUby^A4%~Ie7Z^Um-!Ym%Hu88U5e9s)i8a76?BT_ptq>VYC=}5&fix9C? z&oH&>!mNKUK+9`1qiF}o&NwRo9F<6Kd=m^%=D+2M7_K6r>p7?CfPp6cxVkO-u9|*D ztU?{d9%|nEqvAwc>-Y_lE+eT^_|ZjizGgJUt0}ROMXF9Qp^GyR6g%1;+@|BcZ(s^kW*|@PYO)6Cp zM-)j_1MJDQzL=#Ux#kT+BC~$Ev0V8AuT5<&F-Lspcy_XrmV_#H)c@5hcou$J^-NyS z5)>oFyCJKg!AXOcKN<>hu|&Q3Y)i|Dd^VQ6xe#WROW)F}_UT%}RRx>s_YXR%>w4;9 lm)#!=008Fbsx|-tj}Ws%006%?NHIPz4T}N*00001Sz4hfgarTq diff --git a/inst/extdata/seOutput_distTable_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds b/inst/extdata/seOutput_distTable_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds index 1567d44613587c2f7e645d9261b97a4b7d602b36..04373219f378c783ed244682b02b458eb96bbd9e 100644 GIT binary patch delta 160 zcmV;R0AK&8E37Jz83ezM6!5VffE0gD{`h4lkfjIA6}=~l!M9#`_C~i906N=`^nk~B z1nK=lNA5@#^NHo0K@uR#Gaob)h>^ADPX9o#Gw#K6t3Nck)-@ldW<(fZX&6@#tQ7Zb zk7cnaPI=lcs~o)8a>vf8hDq&A`xLVq)$oI{lWxH_005Dl#|{7ih$@f&0ss)tg;Rq* OFb#_W000000a;qL)kggQ delta 285 zcmV+&0pk9wDyS=v83e$c6=|^@fE0fya0sv2o&VxAji?7p+uG-!*;iEhn!;`ZyNOhP zdCbQmY_{*92rwXxei3#BgnhntsBQKZ_GOPjvuZOcRa5}52YfCO65g5TNHVcDSvaeJ zjKGcE#}UizJnWjft}Yyi^N_G@en_){Xw2SRGf?XiFHScf0%6ss+pMSh529woATD0%zMoJ~);O+3Pn09!D1|{x zhU;}i^mGk5&Y!*4D0l|+Uu^Qx_!1YD{RTD1t-?vrHp75Kn?=iS8|;Fz2&` z10x2*?0~{X$oBiJziHNLy+fa>d1St*#X&3`MM90^Ibt+!wLo{xG?VAF4I#l}m#A6@ z!0bqwy|K%o=7|1enI+^1d9lVmI=kLoWqJLMT`!C_)o;UmQXgjl;RJt#wJejAo@7mg zA9=xM=H4;0M1Hv;ANPtmq=An&qUgonvve1m;M_RyWFQ_KU#c=TIH@!MS4ic2N>FlR z7Nw76?|@bmuqQYw{bVhVsICy$F+35@8T=`Pgt-Z8qva#z}Z#}VN;9eaO^o(MjjPws(O$Y*%5 z>Q|fAxnR%~JMY}#Nv5jwFddbn*Eg1Sme@C*m62lx{`gTOaoroxS0_;VjOsJ9Y>sD! z>cocn?r>YAniI++ym=|awX)G=@gD?N!cE}EQu@9PI+UZQ{=I>Twe*w_x6Z)LS(6}H z1&Eyp_WgDz3ip3IT}ztbx5(CWr`lGu2#w5WyzBsFeEo79{eC`Cva% zfpC%#6&1%Jy`S7PDG29B>B;^h2PUI8nE~N!j*$4MfvueIDSYOm;z3gT>pM!%1a838 z6q~oLj`A{=PZtNI__CioPilW+H zH1&2ik*^YGq}eeqa#a`1 zlC6C|QKNr-bE_M?O=ZViIZqo|WJab8l%grOsO@Tfum!Vi5-c4z1nZT-kWn;#3l0yR zw)W~VicwxZB7Sv#{((~q2uK!79?RI6K0qqsISuuIq)%km6g2ACi8Ny9;)#2hW!N^e zRRRDbqsX^zjPc9#x!-P{sx;2#L5qjtLKV<8j}m`4%Xrk3r{`Vli@ZDk4`)$~=o1!9 zYXHz}99E$tgvjt?5?F(EK?l5=TB|FO3U%hVf-+5~)oR?%mt)xsO>DTL0i@Dkjtq zQXgQPiGAEp*4%bM$sEomB+`>B4`N0W-4P2O<3CLV_B?4A?0UyCt;X!7Qo} z>M$h{+iwzc$$D*l#rkAb!G_7f$W{QF!gUZnjB3%s^&g@VPO52r9c#co9_ zB#iGk?A=1vqYjFGE;Gvzr}TeA{n?Wz{s%`_Q-@yAWe9JVrid66CHQ~rgOg|2NBG_zM>U8sLa(zHnSLv!ar zXtpSmt7m{1n+>fWOTq=^rRfLZ63PsX%u&$(-HEx;?huhPFIq|m11s%n;hV+IgT}Ue zf|Ldqi-NRsKPRoJ8_B8;MWt(MzKv{cY*aw_m6BT!9lqxKtebp(7;jK>0&J`>ZKe)d zZ`Pyv7`*)=?HQ`^BGP{`k?}UD@@_%rVXQvPaC28(wRo}$Y0kOpq+E30vxte|Czu!4 z1FK{q>^u9*1J@inr`S~g3}E$+{RjkL^a?;v>spsjZ_2ADR%j4N5dSFBb&GUoz4Qjz zwgkbnq1GM`>2VFCNUzgmN{EuM%oQ!810_M}{sx|H`5zL-^k{!AhUd0|srDTjBEL_x zxc81kit$=ajNz(R)08GD(J9B-qU;ib?iZ3&Kv^u?|9R2enXD)6CW#)d{G2pi)B7-K zruF6hgIw)0Fl6nE*=1p>=A7e@j(d(&jDQVpP3<)*_axU4JS;5XYnnsG8_E^cNMztA#?>>F*0iYTCE233zjuvg{I#M&hi8B0M7V zPT%|&V09aSxp?~wM4vkSzB}V)Ocl4w^slD&|GuY7oHUe(c*{$2SME;Cd^mw@~DC zzlv|2-%D1{%-Ife>rqA|c2R(DPQ=TYov;v1x6pJwD}a-!iPW$2zQCctI~6K@V)-FP z@=GkQTWx=LY;GAusqi*pfai)wK8WWn!93$GkZQCrX{&IZsy0n@l9h#Ob(y)=ppP>i z^Gh&YslKenA34#%uK-h;XP2oKT`BATfZYsd@H=zM6Hu=UQOHL`z&0hG=xd+SkvU%m zZm)0~gDFbI3gM?rixEEL`=jM88+d{^1TF4ok)3~lDqRk1uG{M*uLK!g)!*29)xDl> zANoxLj*qeYsaK3o_|?x%3OI6zN|GxuLGxdV$oc6$Zwo1~y54nv!YjY*wXgD_gJ(X! zkXE=t)q(!+n}2P^iV1tXu?(?qdeDfUht9|4*2iXw9)nNZ45{r?Y(;f&5d6H`K^ufN z*iU~hE8`+hgk_RdHQ58e79RY;ASCa1l!`oJM#94wiTJh~f9EcH)q+>;M>y@;M9Hi- zlaS_Gge)9W5Y}q{KPX6}VJdjvsWue}n~s{M4S#Q9NeZKUq=Pc<5mj1WBUjw#p=QW% z`aDR@xp)@N)g8gWb+c-owh`a}ehGS#{2PBHR;lZ|>c^+anzUwyI`Fxj=YK+v2j}=h zs_6(%lokDa#~~V*6O@~czk7_es(+RZxec}f1MaWrkxV;{v1$GWgwZ~Tay&61?%2Sr z`7-y=s@GNLyFc1FP7926e-!*A$k!}`eBjqFASWT9MHomwGpwr^>He#H&}+q7F8qHt zl>NenQC3Crc_}ShL&;8cPcTtol{xaPHJ;j^yS$OoNpBxLj8u_Squ4>*dz}MTVFenV zDp)FPXpI6e?_oSd_24Bgs3gc=8fP|S0KbF~BY;+3R|8*6*IYq2sz!G#7>KDoU^2jl zBsekVSb(gmF0VY!l1>6|oY>VzuMU6f(H7;-3hD^QtM3~yCM_3PL$N}tQY?nr>DeTN zO?RxLP3<;6SFa0l<^Y183k`&i%S5I)-UV<|MN3uZ^43%VuS=aL_C3B{=aUN7)~~m9 z@|WfXw|3$r+}5W)nF(rD*!No!g{w3?He>U7uNNYLq4XhT#i~z>e_cAYwk&@t$_Wwv zT`L>Qbduu0vZm%TFD$QsHAj^!%D5?KRH^LlqzI~2y!L68t$&clrG7h#l)oPGeti$O zx>(*YCM**Jd!xNdBH(|R%4%&XB%}M9$aO+1S;ySSH|HIr~r**g}kKB1?BV|2`-*&59pLMBo1ra9>~%ZmzHAtFvKx1}&2T zw1c%^X=)cDtF|)UWXT=0cKHTXY9Jba9nNXhQ)IqIX#uf6hN2t#nk|3ONvhM!V?CXb z{+09z3YZ9JH^0je!=ur_+ArCl7|?Ca0CKC`Q2g$@Yw%NB1pU+$g|zX^0?b4ExjiMC zH$Gg;Q|OS=UtZ0M{6p*^z^C9gVlmB_&&c>|vl&~CoPi8k2PniAi*F2vhsgl9QTq+OE~G6$HLlim5w2Wi%kJGR>1P=2v-<|usFb`fj$TM z9Au$}LO@manJ{@H;A?{vxjGTKD|f6UjOBl{6)r~xx6Rz#RUt$?@G-sD0_|FE)q~ zEt@PdGV+3+nY%J~R;klP`BDiBhVR%A<*thbe#V;9dA_4E_UP0nVU!S@k7BGZi@fy_7QapAxmH>8g5H1@!*`hT2PT z2>QOka?WuLYHt4&&$8#g8=y{-yV4Z#inl4_a9FmHOMbQIN z2qMLSluUm*2uh|@iLNvAf2ZMP1^@k9L(x4{h%Fl&_DBF~5~LvaWM4ta*eoKMNZM^o z+>V**)8)F9q(ZjPPk1Y~rBJQ)15bM0uY#s0w}wu6E7mx`d^Vc7^-&tcU^!D*LWMmB z4<9-2GGMNz*(jam*?#R4HId5iXs*tz`r-zc$5Y$*L0cPn zF_u<7Xi&AT-u*$Ij?(g+Rl?EI2f?hQ$M}R-?25&s3o2|LZ8=$J5a0F+PHF2<&xjqn>H zM_~IszebyRhGX3O6i;qcY2Ist5Fnm622?(&l%m1gCP)F#d8^_PqD1?G>=jwv$#w@$ zA`$haPTt(0P*W$+W53mv!L#a&hY6bMKSh5cTC=LWD~6nEf=wpg0w~B~Rqr?{I9&ru zMY2ty%l(m~&wrxC6*WIho64l=4bN96(?2BYpw^+~^7M#?2806uVnIIbRMxX7%e}^{;fj#7uQV@ttIO1t|pB4 zBM?0TGCVcoAf!(N7 z^Xwyl`)c5v2pd(f9M$MQuOAytZ^*CjB2+6(7&}@nazM#Np@2$Ji_lJuH9UW8KLpJR zYr?TR_hpcrtZYlz^gE6fp=u2($V}SRG6x$q874z0`Ko4y8bvQIQbco{-1{FqPTqyI#N7dUi%4q*7t4cv8Y%z|Xd zAGX--19e2F4ggcB-*ssJt^CpR1{n21L#^Tm_Q4i=zfk9qvYmTt%dSPTo87_^ly(DaxS-o&%oY{XD#2DVqhHtP3Ls0d7^-_^To1So=~S z+czw_IZ8SL54od`Tg`d@Ar(MiL?XLE%uB?DRE!U;!*s_Njtwa^CKX!wHq-|jgofFV=;p@4IIHcF$hY(%vXq98 jTUeX`j%5S300D$QCFQE#)GV)M># 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 literal 4452 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 a0mUJ(`vCxizA3{#Fb#_W000000a;p}L0-=Q literal 4452 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 From d0b3b7d6753ae3639a9b972293b409ddf778ab1b Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 28 Apr 2023 15:25:30 +0800 Subject: [PATCH 021/189] Assign names to transcripts earler so subset and lowConf are given names --- R/bambu-extendAnnotations-utilityExtend.R | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index 316cbe1b..bc67281b 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -81,6 +81,10 @@ filterTranscriptsByAnnotation <- function(rowDataCombined, annotationGrangesList #calculate relative read count before any filtering rowDataCombined <- group_by(rowDataCombined, GENEID) %>% mutate(relReadCount = readCount/sum(readCount)) + rowDataCombined$TXNAME[is.na(rowDataCombined$TXNAME)] <- paste0( + prefix, "Tx", seq_len(sum(is.na(rowDataCombined$TXNAME)))) + names(exonRangesCombined) <- rowDataCombined$TXNAME + #filter out subset reads if (remove.subsetTx) { # (1) based on compatibility with annotations notCompatibleIds <- (!grepl("compatible", rowDataCombined$readClassType) | @@ -651,11 +655,11 @@ combindRowDataWithRanges <- function(rowDataCombinedFiltered, exonRangesCombined extendedAnnotationRanges <- exonRangesCombinedFiltered if("NDR" %in% colnames(rowDataCombinedFiltered)){ mcols(extendedAnnotationRanges) <- - rowDataCombinedFiltered[, c("GENEID", "novelGene", "novelTranscript", "txClassDescription","readCount", "NDR", + rowDataCombinedFiltered[, c("TXNAME", "GENEID", "novelGene", "novelTranscript", "txClassDescription","readCount", "NDR", "maxTxScore", "maxTxScore.noFit", "relReadCount")] } else{ mcols(extendedAnnotationRanges) <- - rowDataCombinedFiltered[, c("GENEID", "novelGene", "novelTranscript", "txClassDescription","readCount", + rowDataCombinedFiltered[, c("TXNAME", "GENEID", "novelGene", "novelTranscript", "txClassDescription","readCount", "maxTxScore", "maxTxScore.noFit", "relReadCount")] } return(extendedAnnotationRanges) @@ -665,9 +669,9 @@ combindRowDataWithRanges <- function(rowDataCombinedFiltered, exonRangesCombined #' @noRd combineWithAnnotations <- function(rowDataCombinedFiltered, extendedAnnotationRanges,annotationGrangesList, prefix){ - equalRanges = rowDataCombinedFiltered[!is.na(rowDataCombinedFiltered$TXNAME),] + equalRanges = rowDataCombinedFiltered[!(rowDataCombinedFiltered$novelTranscript),] #remove extended ranges that are already present in annotation - extendedAnnotationRanges <- extendedAnnotationRanges[is.na(rowDataCombinedFiltered$TXNAME)] + extendedAnnotationRanges <- extendedAnnotationRanges[rowDataCombinedFiltered$novelTranscript] annotationRangesToMerge <- annotationGrangesList if(length(annotationGrangesList)){ mcols(annotationRangesToMerge)$readCount <- NA @@ -687,8 +691,7 @@ combineWithAnnotations <- function(rowDataCombinedFiltered, #mcols(annotationRangesToMerge[equalRanges$TXNAME])$relSubsetCount = equalRanges$relSubsetCount } if (length(extendedAnnotationRanges)) { - mcols(extendedAnnotationRanges)$TXNAME <- paste0( - prefix, "Tx", seq_along(extendedAnnotationRanges)) + mcols(extendedAnnotationRanges)$TXNAME <- rowDataCombinedFiltered[rowDataCombinedFiltered$novelTranscript,]$TXNAME names(extendedAnnotationRanges) <- mcols(extendedAnnotationRanges)$TXNAME extendedAnnotationRanges <- c(extendedAnnotationRanges, annotationRangesToMerge) # this will throw error in line 648-649 when extendedAnnotationRanges is empty @@ -837,7 +840,7 @@ setNDR = function(extendedAnnotations, NDR = NULL, includeRef = FALSE, prefix = toRemove = (mcols(extendedAnnotations)$NDR > NDR & grepl(prefix, mcols(extendedAnnotations)$TXNAME)) toAdd = (mcols(metadata(extendedAnnotations)$lowConfidenceTranscripts)$NDR <= NDR & - grepl(prefix, mcols(extendedAnnotations)$TXNAME)) + grepl(prefix, mcols(metadata(extendedAnnotations)$lowConfidenceTranscripts)$TXNAME)) } temp = c(metadata(extendedAnnotations)$lowConfidenceTranscripts[!toAdd], extendedAnnotations[toRemove]) From afc9e039fb7162d3a8b479ada9603b1f57fdc121 Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 28 Apr 2023 15:55:55 +0800 Subject: [PATCH 022/189] Remove unneeded argument --- R/bambu-extendAnnotations-utilityExtend.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index bc67281b..164dfc54 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -181,7 +181,7 @@ recommendNDR <- function(combinedTranscripts, baselineFDR = 0.1, NDR = NULL, def return(NDR) } -recommendNDR.onAnnotations = function(annotations, prefix = "Bambu", baselineFDR = 0.1, NDR = NULL, defaultModels2 = defaultModels2){ +recommendNDR.onAnnotations = function(annotations, prefix = "Bambu", baselineFDR = 0.1, defaultModels2 = defaultModels2){ mcols = mcols(annotations)[!is.na(mcols(annotations)$maxTxScore),] equal = !grepl(prefix, mcols$TXNAME) #add envirnment so poly() works @@ -828,7 +828,7 @@ setNDR = function(extendedAnnotations, NDR = NULL, includeRef = FALSE, prefix = #recommend an NDR (needed when users read in Bambu GTF) if(is.null(NDR)){ tempAnno = c(metadata(extendedAnnotations)$lowConfidenceTranscripts, extendedAnnotations) - NDR = recommendNDR.onAnnotations(tempAnno, prefix = prefix, baselineFDR = baselineFDR, NDR = NDR, defaultModels2 = defaultModels2) + NDR = recommendNDR.onAnnotations(tempAnno, prefix = prefix, baselineFDR = baselineFDR, defaultModels2 = defaultModels2) message("Recommending a novel discovery rate (NDR) of: ", NDR) } From 735a22e4ab0ed5344823909c0a50cb7e12424775 Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 28 Apr 2023 15:56:14 +0800 Subject: [PATCH 023/189] Fix includeRef bug --- R/bambu-extendAnnotations-utilityExtend.R | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index 164dfc54..f90a1b90 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -827,15 +827,16 @@ setNDR = function(extendedAnnotations, NDR = NULL, includeRef = FALSE, prefix = #recommend an NDR (needed when users read in Bambu GTF) if(is.null(NDR)){ - tempAnno = c(metadata(extendedAnnotations)$lowConfidenceTranscripts, extendedAnnotations) + tempAnno = c(extendedAnnotations, metadata(extendedAnnotations)$lowConfidenceTranscripts) NDR = recommendNDR.onAnnotations(tempAnno, prefix = prefix, baselineFDR = baselineFDR, defaultModels2 = defaultModels2) message("Recommending a novel discovery rate (NDR) of: ", NDR) } #If reference annotations should be filtered too (note that reference annotations with no read support arn't filtered) if(includeRef){ - toRemove = (mcols(extendedAnnotations)$NDR > NDR) - toAdd = mcols(metadata(extendedAnnotations)$lowConfidenceTranscripts)$NDR <= NDR + toRemove = (!is.na(mcols(extendedAnnotations)$NDR) & mcols(extendedAnnotations)$NDR > NDR) + toAdd = !is.na(mcols(metadata(extendedAnnotations)$lowConfidenceTranscripts)$NDR) & + mcols(metadata(extendedAnnotations)$lowConfidenceTranscripts)$NDR <= NDR } else { toRemove = (mcols(extendedAnnotations)$NDR > NDR & grepl(prefix, mcols(extendedAnnotations)$TXNAME)) From d2427963ac6ad3f96567bf2a95857abdbba9c733 Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 28 Apr 2023 16:01:03 +0800 Subject: [PATCH 024/189] Unit tests for setNDR --- tests/testthat/test_setNDR.R | 94 ++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 tests/testthat/test_setNDR.R diff --git a/tests/testthat/test_setNDR.R b/tests/testthat/test_setNDR.R new file mode 100644 index 00000000..7d4bca53 --- /dev/null +++ b/tests/testthat/test_setNDR.R @@ -0,0 +1,94 @@ +context("setNDR") + +test_that("txRange generates a gene and transcript score",{ + readClasses <- readRDS(system.file("extdata","readClassesUnstranded_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds",package = "bambu")) + annotations <- readRDS(system.file("extdata","annotationGranges_txdbGrch38_91_chr9_1_1000000.rds",package = "bambu")) + genomeSequence <- system.file("extdata","Homo_sapiens.GRCh38.dna_sm.primary_assembly_chr9_1_1000000.fa",package = "bambu") + genomeSequence <- checkInputSequence(genomeSequence) + + se = scoreReadClasses(readClasses, genomeSequence, annotations, defaultModels) + + seExpected = readRDS(system.file("extdata", "seReadClassUnstranded_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds", package = "bambu")) + + expect_is(rowData(se)$txScore, class = 'numeric') + expect_equal(rowData(se)$txScore, rowData(seExpected)$txScore) +}) + +test_that("Correctly moves transcripts with NDR above the threshold into lowCofidenceTranscripts",{ + extendedAnnotationsExpected <- readRDS(system.file("extdata", "extendedAnnotationGranges_txdbGrch38_91_chr9_1_1000000.rds",package = "bambu")) + + expect_equal(length(extendedAnnotationsExpected), 106) + expect_equal(length(metadata(extendedAnnotationsExpected)$lowConfidenceTranscripts),1) + + extendedAnnotationsExpected_0.1 = setNDR(extendedAnnotationsExpected, 0.1) + expect_equal(length(extendedAnnotationsExpected_0.1), 105) + expect_equal(length(metadata(extendedAnnotationsExpected_0.1)$lowConfidenceTranscripts),2) +}) + +test_that("Correctly moves transcripts with NDR below the threshold into the extendedAnnotations",{ + extendedAnnotationsExpected <- readRDS(system.file("extdata", "extendedAnnotationGranges_txdbGrch38_91_chr9_1_1000000.rds",package = "bambu")) + + expect_equal(length(extendedAnnotationsExpected), 106) + expect_equal(length(metadata(extendedAnnotationsExpected)$lowConfidenceTranscripts),1) + + extendedAnnotationsExpected_1 = setNDR(extendedAnnotationsExpected, 1) + expect_equal(length(extendedAnnotationsExpected_1), 107) + expect_equal(length(metadata(extendedAnnotationsExpected_1)$lowConfidenceTranscripts),0) +}) + +test_that("Reference annotations are not moved unless includeRef is used", { + extendedAnnotationsExpected <- readRDS(system.file("extdata", "extendedAnnotationGranges_txdbGrch38_91_chr9_1_1000000.rds",package = "bambu")) + + expect_equal(length(extendedAnnotationsExpected), 106) + expect_equal(length(metadata(extendedAnnotationsExpected)$lowConfidenceTranscripts),1) + + extendedAnnotationsExpected_0.5 = setNDR(extendedAnnotationsExpected, 0.5, includeRef = TRUE) + expect_equal(length(extendedAnnotationsExpected_0.5), 104) + expect_equal(length(metadata(extendedAnnotationsExpected_0.5)$lowConfidenceTranscripts),3) +}) + +test_that("setNDR only effects transcripts with the prefix", { + extendedAnnotationsExpected <- readRDS(system.file("extdata", "extendedAnnotationGranges_txdbGrch38_91_chr9_1_1000000.rds",package = "bambu")) + + expect_equal(length(extendedAnnotationsExpected), 106) + expect_equal(length(metadata(extendedAnnotationsExpected)$lowConfidenceTranscripts),1) + + extendedAnnotationsExpected_1 = setNDR(extendedAnnotationsExpected, 1, prefix = "Stringtie2") + expect_equal(length(extendedAnnotationsExpected_1), 106) + expect_equal(length(metadata(extendedAnnotationsExpected_1)$lowConfidenceTranscripts),1) +}) + +test_that("setNDR saves the used NDR threshold correctly", { + extendedAnnotationsExpected <- readRDS(system.file("extdata", "extendedAnnotationGranges_txdbGrch38_91_chr9_1_1000000.rds",package = "bambu")) + metadata(extendedAnnotationsExpected)$NDR = 0.7 + extendedAnnotationsExpected_1 = setNDR(extendedAnnotationsExpected, 1) + metadata(extendedAnnotationsExpected_1)$NDR = 1 +}) + +test_that("setNDR works when no lowConfidenceTranscripts are present", { + seIsoReCombined <- readRDS(system.file("extdata", "seIsoReCombined_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds", package = "bambu")) + gr <- readRDS(system.file("extdata", "annotationGranges_txdbGrch38_91_chr9_1_1000000.rds", package = "bambu")) + + extendedAnnotations <- isore.extendAnnotations(combinedTranscripts=seIsoReCombined, + annotationGrangesList=gr, + remove.subsetTx = TRUE, min.sampleNumber = 1, NDR = 1, + min.exonDistance = 35, min.exonOverlap = 10, + min.primarySecondaryDist = 5, min.primarySecondaryDistStartEnd = 5, + prefix='Bambu', verbose=FALSE, defaultModels = defaultModels) + + extendedAnnotationsExpected_0.7 = setNDR(extendedAnnotationsExpected, 0.7) + expect_equal(length(extendedAnnotationsExpected), 106) + expect_equal(length(metadata(extendedAnnotationsExpected)$lowConfidenceTranscripts),1) +}) + +test_that("setNDR recommends the correct NDR", { + extendedAnnotationsExpected <- readRDS(system.file("extdata", "extendedAnnotationGranges_txdbGrch38_91_chr9_1_1000000.rds",package = "bambu")) + + extendedAnnotationsExpected_rec = setNDR(extendedAnnotationsExpected) + expect_equal(unname(metadata(extendedAnnotationsExpected_rec)$NDR), -0.013) +}) + +test_that("setNDR handles annotations with no NDR", { + annotations <- readRDS(system.file("extdata","annotationGranges_txdbGrch38_91_chr9_1_1000000.rds",package = "bambu")) + expect_warning(setNDR(annotations, 0.5), "Annotations were not extended by Bambu") +}) \ No newline at end of file From 75458de6023d5c0c621ea141e1e1794de8768c1e Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 28 Apr 2023 16:26:23 +0800 Subject: [PATCH 025/189] Unit tests for reading and writing NDR and txScore --- data-raw/DATASET.R | 6 +- ...onGranges_txdbGrch38_91_chr9_1_1000000.gtf | 947 ++++++++++++++++++ ...onGranges_txdbGrch38_91_chr9_1_1000000.rds | Bin 4512 -> 4608 bytes tests/testthat/test_prepareAnnotations.R | 8 + tests/testthat/test_readWrite.R | 14 + 5 files changed, 972 insertions(+), 3 deletions(-) create mode 100644 inst/extdata/extendedAnnotationGranges_txdbGrch38_91_chr9_1_1000000.gtf diff --git a/data-raw/DATASET.R b/data-raw/DATASET.R index 95aae23b..df6b4616 100755 --- a/data-raw/DATASET.R +++ b/data-raw/DATASET.R @@ -300,12 +300,12 @@ gr <- readRDS(system.file("extdata", "annotationGranges_txdbGrch38_91_chr9_1_100 extendedAnnotations <- isore.extendAnnotations(combinedTranscripts=seIsoReCombined, annotationGrangesList=gr, - remove.subsetTx = TRUE, min.sampleNumber = 1, NDR = 0.1, + remove.subsetTx = TRUE, min.sampleNumber = 1, NDR = 0.7, min.exonDistance = 35, min.exonOverlap = 10, min.primarySecondaryDist = 5, min.primarySecondaryDistStartEnd = 5, - prefix='', verbose=FALSE, defaultModels = defaultModels) + prefix='Bambu', verbose=FALSE, defaultModels = defaultModels) saveRDS(extendedAnnotations, file = "./inst/extdata/extendedAnnotationGranges_txdbGrch38_91_chr9_1_1000000.rds", compress = "xz") - +writeToGTF(extendedAnnotations, "./inst/extdata/extendedAnnotationGranges_txdbGrch38_91_chr9_1_1000000.gtf") ## expected output for test isore seReadClass1 <- readRDS(system.file("extdata", "seReadClassUnstranded_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds", package = "bambu")) diff --git a/inst/extdata/extendedAnnotationGranges_txdbGrch38_91_chr9_1_1000000.gtf b/inst/extdata/extendedAnnotationGranges_txdbGrch38_91_chr9_1_1000000.gtf new file mode 100644 index 00000000..a58dfa8b --- /dev/null +++ b/inst/extdata/extendedAnnotationGranges_txdbGrch38_91_chr9_1_1000000.gtf @@ -0,0 +1,947 @@ +9 Bambu transcript 12134 13783 . + . gene_id "ENSG00000236875"; transcript_id "ENST00000421620"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 12134 12190 . + . gene_id "ENSG00000236875"; transcript_id "ENST00000421620"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 12291 12340 . + . gene_id "ENSG00000236875"; transcript_id "ENST00000421620"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 12726 12834 . + . gene_id "ENSG00000236875"; transcript_id "ENST00000421620"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 13088 13157 . + . gene_id "ENSG00000236875"; transcript_id "ENST00000421620"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 13338 13487 . + . gene_id "ENSG00000236875"; transcript_id "ENST00000421620"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 13566 13783 . + . gene_id "ENSG00000236875"; transcript_id "ENST00000421620"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 14513 19197 . - . gene_id "ENSG00000181404"; transcript_id "BambuTx1"; NDR "0.636065870523453"; txScore ""; txScore.noFit ""; +9 Bambu exon 14513 14940 . - . gene_id "ENSG00000181404"; transcript_id "BambuTx1"; exon_number "10"; NDR "0.636065870523453"; maxTxScore "0.363934129476547"; maxTxScore.noFit "0.363934129476547"; +9 Bambu transcript 14521 29739 . - . gene_id "ENSG00000181404"; transcript_id "ENST00000442898"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 14521 14940 . - . gene_id "ENSG00000181404"; transcript_id "ENST00000442898"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 15081 15149 . - . gene_id "ENSG00000181404"; transcript_id "BambuTx1"; exon_number "9"; NDR "0.636065870523453"; maxTxScore "0.363934129476547"; maxTxScore.noFit "0.363934129476547"; +9 Bambu exon 15081 15149 . - . gene_id "ENSG00000181404"; transcript_id "ENST00000442898"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 15909 16421 . - . gene_id "ENSG00000181404"; transcript_id "BambuTx1"; exon_number "8"; NDR "0.636065870523453"; maxTxScore "0.363934129476547"; maxTxScore.noFit "0.363934129476547"; +9 Bambu exon 15909 16061 . - . gene_id "ENSG00000181404"; transcript_id "ENST00000442898"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 16718 16876 . - . gene_id "ENSG00000181404"; transcript_id "BambuTx1"; exon_number "7"; NDR "0.636065870523453"; maxTxScore "0.363934129476547"; maxTxScore.noFit "0.363934129476547"; +9 Bambu exon 16718 16876 . - . gene_id "ENSG00000181404"; transcript_id "ENST00000442898"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 16965 17166 . - . gene_id "ENSG00000181404"; transcript_id "ENST00000442898"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 16969 17166 . - . gene_id "ENSG00000181404"; transcript_id "BambuTx1"; exon_number "6"; NDR "0.636065870523453"; maxTxScore "0.363934129476547"; maxTxScore.noFit "0.363934129476547"; +9 Bambu exon 17344 17479 . - . gene_id "ENSG00000181404"; transcript_id "BambuTx1"; exon_number "5"; NDR "0.636065870523453"; maxTxScore "0.363934129476547"; maxTxScore.noFit "0.363934129476547"; +9 Bambu exon 17344 17479 . - . gene_id "ENSG00000181404"; transcript_id "ENST00000442898"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 17719 17855 . - . gene_id "ENSG00000181404"; transcript_id "BambuTx1"; exon_number "4"; NDR "0.636065870523453"; maxTxScore "0.363934129476547"; maxTxScore.noFit "0.363934129476547"; +9 Bambu exon 17719 17855 . - . gene_id "ENSG00000181404"; transcript_id "ENST00000442898"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 18028 18174 . - . gene_id "ENSG00000181404"; transcript_id "BambuTx1"; exon_number "3"; NDR "0.636065870523453"; maxTxScore "0.363934129476547"; maxTxScore.noFit "0.363934129476547"; +9 Bambu exon 18028 18174 . - . gene_id "ENSG00000181404"; transcript_id "ENST00000442898"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 18381 18482 . - . gene_id "ENSG00000181404"; transcript_id "BambuTx1"; exon_number "2"; NDR "0.636065870523453"; maxTxScore "0.363934129476547"; maxTxScore.noFit "0.363934129476547"; +9 Bambu exon 18381 18492 . - . gene_id "ENSG00000181404"; transcript_id "ENST00000442898"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 19026 19197 . - . gene_id "ENSG00000181404"; transcript_id "BambuTx1"; exon_number "1"; NDR "0.636065870523453"; maxTxScore "0.363934129476547"; maxTxScore.noFit "0.363934129476547"; +9 Bambu exon 24851 25004 . - . gene_id "ENSG00000181404"; transcript_id "ENST00000442898"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 27657 30891 . + . gene_id "ENSG00000227518"; transcript_id "ENST00000422679"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 27657 30445 . + . gene_id "ENSG00000227518"; transcript_id "ENST00000422679"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 29602 29739 . - . gene_id "ENSG00000181404"; transcript_id "ENST00000442898"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 30144 30281 . + . gene_id "ENSG00000283921"; transcript_id "ENST00000408365"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 30144 30281 . + . gene_id "ENSG00000283921"; transcript_id "ENST00000408365"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 30758 30891 . + . gene_id "ENSG00000227518"; transcript_id "ENST00000422679"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 34394 35860 . - . gene_id "ENSG00000218839"; transcript_id "ENST00000449442"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 34394 34957 . - . gene_id "ENSG00000218839"; transcript_id "ENST00000449442"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 34965 35871 . - . gene_id "ENSG00000218839"; transcript_id "ENST00000305248"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 34965 35264 . - . gene_id "ENSG00000218839"; transcript_id "ENST00000305248"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 35060 35264 . - . gene_id "ENSG00000218839"; transcript_id "ENST00000449442"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 35504 35871 . - . gene_id "ENSG00000218839"; transcript_id "ENST00000305248"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 35504 35860 . - . gene_id "ENSG00000218839"; transcript_id "ENST00000449442"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 72674 87667 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000621255"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 72674 72816 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000621255"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 72675 75293 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000620326"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 72675 72816 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000620326"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 72691 88826 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000429980"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 72691 72816 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000429980"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 72705 75327 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000442069"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 72705 72816 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000442069"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 72727 87739 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000613372"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 72727 72816 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000613372"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 74139 87590 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000622412"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 74139 74205 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000622412"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 74149 74205 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000442069"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 74882 75327 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000442069"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 74882 75293 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000620326"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 79345 79537 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000429980"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 79345 79537 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000613372"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 79345 79537 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000621255"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 79345 79537 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000622412"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 80651 80807 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000621255"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 87284 87739 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000613372"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 87284 87667 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000621255"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 87284 87590 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000622412"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 87661 88775 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000614900"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 87661 88195 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000614900"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 88742 88826 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000429980"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 88742 88775 . + . gene_id "ENSG00000277631"; transcript_id "ENST00000614900"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 100804 102850 . - . gene_id "ENSG00000227917"; transcript_id "ENST00000435421"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 100804 101304 . - . gene_id "ENSG00000227917"; transcript_id "ENST00000435421"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 100994 102941 . - . gene_id "ENSG00000227917"; transcript_id "ENST00000427318"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 100994 101304 . - . gene_id "ENSG00000227917"; transcript_id "ENST00000427318"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 102473 102541 . - . gene_id "ENSG00000227917"; transcript_id "ENST00000427318"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 102740 102941 . - . gene_id "ENSG00000227917"; transcript_id "ENST00000427318"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 102740 102850 . - . gene_id "ENSG00000227917"; transcript_id "ENST00000435421"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 112713 113754 . - . gene_id "ENSG00000231808"; transcript_id "ENST00000416242"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 112713 113067 . - . gene_id "ENSG00000231808"; transcript_id "ENST00000416242"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 113694 113754 . - . gene_id "ENSG00000231808"; transcript_id "ENST00000416242"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 116231 118204 . - . gene_id "ENSG00000170122"; transcript_id "ENST00000382500"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 116231 118204 . - . gene_id "ENSG00000170122"; transcript_id "ENST00000382500"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 121038 179058 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000356521"; NDR "0.191389977931976"; txScore ""; txScore.noFit ""; +9 Bambu exon 121038 121573 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000356521"; exon_number "15"; NDR "0.191389977931976"; maxTxScore "0.808610022068024"; maxTxScore.noFit "0.808610022068024"; +9 Bambu transcript 121041 179147 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377400"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 121041 121573 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377400"; exon_number "15"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 121052 146140 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000475990"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 121052 123282 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000475990"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 121058 164009 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000619157"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 121058 121573 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000619157"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 121060 179047 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000314367"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 121060 121573 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000314367"; exon_number "16"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 121089 149446 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000475411"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu transcript 121089 179012 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000612045"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 121089 122090 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000475411"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 121089 121573 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000612045"; exon_number "16"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 121091 148625 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000611457"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 121091 121573 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000611457"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 121224 179042 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000465014"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 121224 121573 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000465014"; exon_number "15"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 121407 179008 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613508"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 121407 121573 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613508"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 121409 179021 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382447"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 121409 121573 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382447"; exon_number "14"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 121410 166599 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000487575"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 121410 121573 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000487575"; exon_number "15"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 121411 123747 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000464198"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 121411 121573 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000464198"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 121418 167605 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000495302"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 121418 121573 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000495302"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 121503 146154 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000462513"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 121503 121573 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000462513"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 121961 122090 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000314367"; exon_number "15"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 121961 122090 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000356521"; exon_number "14"; NDR "0.191389977931976"; maxTxScore "0.808610022068024"; maxTxScore.noFit "0.808610022068024"; +9 Bambu exon 121961 122090 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377400"; exon_number "14"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 121961 122090 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382447"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 121961 122136 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000462513"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 121961 122090 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000464198"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 121961 122090 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000465014"; exon_number "14"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 121961 122090 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000487575"; exon_number "14"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 121961 122090 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000495302"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 121961 122090 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000611457"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 121961 122090 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000612045"; exon_number "15"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 121961 122090 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613508"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 121961 122090 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000619157"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 122691 179052 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616944"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 122691 123282 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616944"; exon_number "14"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 122843 179016 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613355"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 122843 123282 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613355"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123217 123282 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000314367"; exon_number "14"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123217 123282 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000356521"; exon_number "13"; NDR "0.191389977931976"; maxTxScore "0.808610022068024"; maxTxScore.noFit "0.808610022068024"; +9 Bambu exon 123217 123282 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377400"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123217 123282 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382447"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123217 123282 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000462513"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123217 123282 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000464198"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123217 123282 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000465014"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123217 123282 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000475411"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123217 123282 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000487575"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123217 123282 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000495302"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123217 123282 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000611457"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123217 123282 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000612045"; exon_number "14"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123217 123282 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613508"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123217 123282 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000619157"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123386 123454 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000314367"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123386 123454 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000356521"; exon_number "12"; NDR "0.191389977931976"; maxTxScore "0.808610022068024"; maxTxScore.noFit "0.808610022068024"; +9 Bambu exon 123386 123454 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377400"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123386 123454 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382447"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123386 123454 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000462513"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123386 123747 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000464198"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123386 123454 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000465014"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123386 123454 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000475411"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123386 123454 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000475990"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123386 123454 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000487575"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123386 123454 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000495302"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123386 123454 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000611457"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123386 123454 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000612045"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123386 123454 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613355"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123386 123454 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613508"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123386 123454 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616944"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 123386 123454 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000619157"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 134979 135030 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000314367"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 134979 135030 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000356521"; exon_number "11"; NDR "0.191389977931976"; maxTxScore "0.808610022068024"; maxTxScore.noFit "0.808610022068024"; +9 Bambu exon 134979 135030 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377400"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 134979 135030 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382447"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 134979 135030 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000462513"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 134979 135030 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000465014"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 134979 135030 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000475411"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 134979 135030 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000475990"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 134979 135030 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000487575"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 134979 135030 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000495302"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 134979 135030 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000611457"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 134979 135030 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000612045"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 134979 135030 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613355"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 134979 135030 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613508"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 134979 135030 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616944"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 134979 135030 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000619157"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 146102 146158 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000314367"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 146102 146158 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000356521"; exon_number "10"; NDR "0.191389977931976"; maxTxScore "0.808610022068024"; maxTxScore.noFit "0.808610022068024"; +9 Bambu exon 146102 146158 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377400"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 146102 146154 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000462513"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 146102 146158 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000465014"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 146102 149446 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000475411"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 146102 146140 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000475990"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 146102 146158 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000487575"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 146102 146158 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000495302"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 146102 148625 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000611457"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 146102 146158 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000612045"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 146102 146158 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616944"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 146102 146158 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000619157"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 146114 172172 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000498044"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 146114 146158 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000498044"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 147901 148040 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000465014"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 147950 164039 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000618361"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 147950 148044 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000618361"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 150132 164039 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000618061"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 150132 152078 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000618061"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 150509 150725 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000487575"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 150642 150725 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000498044"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 151305 151427 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000495302"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 151305 151427 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000612045"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 151305 151427 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000618361"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 151577 179088 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613988"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 151577 152078 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613988"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 151745 161647 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000489272"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 151745 152078 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000489272"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 152034 173325 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616803"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 152034 152078 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000314367"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 152034 152078 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000356521"; exon_number "9"; NDR "0.191389977931976"; maxTxScore "0.808610022068024"; maxTxScore.noFit "0.808610022068024"; +9 Bambu exon 152034 152078 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377400"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 152034 152078 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382447"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 152034 152078 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000465014"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 152034 152078 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000487575"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 152034 152078 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000495302"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 152034 152078 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000498044"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 152034 152078 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000612045"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 152034 152078 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613355"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 152034 152078 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613508"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 152034 152078 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616803"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 152034 152078 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616944"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 152034 152078 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000618361"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 152034 152078 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000619157"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 152914 179025 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377447"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 152914 154795 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377447"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 154709 154795 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000314367"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 154709 154795 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000356521"; exon_number "8"; NDR "0.191389977931976"; maxTxScore "0.808610022068024"; maxTxScore.noFit "0.808610022068024"; +9 Bambu exon 154709 154795 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377400"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 154709 154795 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382447"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 154709 154795 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000487575"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 154709 154795 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000489272"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 154709 154795 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000495302"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 154709 154795 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000498044"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 154709 154795 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613355"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 154709 154795 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613988"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 154709 154795 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616803"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 154709 154795 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616944"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 154709 154795 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000618361"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 154709 154795 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000619157"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 154732 172179 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000620292"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 154732 154795 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000620292"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 156481 156527 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000314367"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 156481 156527 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000356521"; exon_number "7"; NDR "0.191389977931976"; maxTxScore "0.808610022068024"; maxTxScore.noFit "0.808610022068024"; +9 Bambu exon 156481 156527 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377400"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 156481 156527 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377447"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 156481 156527 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382447"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 156481 156527 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000465014"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 156481 156527 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000487575"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 156481 156527 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000489272"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 156481 156527 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000495302"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 156481 156527 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000498044"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 156481 156527 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000612045"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 156481 156527 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613355"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 156481 156527 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613508"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 156481 156527 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613988"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 156481 156527 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616803"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 156481 156527 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616944"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 156481 156527 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000618061"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 156481 156527 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000618361"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 156481 156527 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000619157"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 156481 156527 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000620292"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 160001 160140 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000487575"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 160001 160140 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000498044"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 160001 160140 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000612045"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 160001 160140 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000620292"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 160088 179018 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000431099"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 160088 160140 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000431099"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 161567 161654 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000465014"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 161567 161654 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000487575"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 161567 161647 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000489272"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 161567 161654 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000612045"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 161567 161654 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616803"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 161567 161654 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616944"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 161567 161654 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000618061"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 161567 161654 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000618361"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 161567 161654 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000619157"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 162432 162469 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000314367"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 162432 162469 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000356521"; exon_number "6"; NDR "0.191389977931976"; maxTxScore "0.808610022068024"; maxTxScore.noFit "0.808610022068024"; +9 Bambu exon 162432 162469 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377400"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 162432 162469 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377447"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 162432 162469 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382447"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 162432 162469 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000431099"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 162432 162469 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000465014"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 162432 162469 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000487575"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 162432 162469 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000495302"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 162432 162469 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000498044"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 162432 162469 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000612045"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 162432 162469 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613355"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 162432 162469 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613508"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 162432 162469 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613988"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 162432 162469 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616803"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 162432 162469 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616944"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 162432 162469 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000618061"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 162432 162469 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000618361"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 162432 162469 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000619157"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 162432 162469 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000620292"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 163978 164037 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000314367"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 163978 164037 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000356521"; exon_number "5"; NDR "0.191389977931976"; maxTxScore "0.808610022068024"; maxTxScore.noFit "0.808610022068024"; +9 Bambu exon 163978 164037 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377400"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 163978 164037 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377447"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 163978 164037 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382447"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 163978 164037 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000431099"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 163978 164037 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000487575"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 163978 164037 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000495302"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 163978 164037 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000498044"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 163978 164037 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613355"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 163978 164037 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613508"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 163978 164037 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613988"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 163978 164037 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616944"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 163978 164039 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000618061"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 163978 164039 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000618361"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 163978 164009 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000619157"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 163978 164037 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000620292"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 164403 164448 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616803"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 165983 166599 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000487575"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 165983 167605 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000495302"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 171596 173371 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000483817"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 171596 172172 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000483817"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 171953 179023 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382389"; NDR "0.521544337272644"; txScore ""; txScore.noFit ""; +9 Bambu transcript 171953 179045 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382393"; NDR "0.330390512943268"; txScore ""; txScore.noFit ""; +9 Bambu exon 171953 173366 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382389"; exon_number "4"; NDR "0.521544337272644"; maxTxScore "0.478455662727356"; maxTxScore.noFit "0.478455662727356"; +9 Bambu exon 171953 173366 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382393"; exon_number "3"; NDR "0.330390512943268"; maxTxScore "0.669609487056732"; maxTxScore.noFit "0.669609487056732"; +9 Bambu exon 172081 172172 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000314367"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 172081 172172 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000356521"; exon_number "4"; NDR "0.191389977931976"; maxTxScore "0.808610022068024"; maxTxScore.noFit "0.808610022068024"; +9 Bambu exon 172081 172172 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377400"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 172081 172172 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377447"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 172081 172172 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382447"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 172081 172172 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000431099"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 172081 172172 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000465014"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 172081 172172 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000498044"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 172081 172172 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000612045"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 172081 172172 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613355"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 172081 172172 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613508"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 172081 172172 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613988"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 172081 172172 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616803"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 172081 172172 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616944"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 172081 172179 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000620292"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 173270 173366 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000314367"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 173270 173366 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000356521"; exon_number "3"; NDR "0.191389977931976"; maxTxScore "0.808610022068024"; maxTxScore.noFit "0.808610022068024"; +9 Bambu exon 173270 173366 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377400"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 173270 173366 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377447"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 173270 173366 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382447"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 173270 173366 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000431099"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 173270 173366 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000465014"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 173270 173371 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000483817"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 173270 173366 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000612045"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 173270 173366 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613355"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 173270 173366 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613508"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 173270 173366 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613988"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 173270 173325 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616803"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 173270 173366 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616944"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 175698 175784 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000314367"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 175698 175784 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000356521"; exon_number "2"; NDR "0.191389977931976"; maxTxScore "0.808610022068024"; maxTxScore.noFit "0.808610022068024"; +9 Bambu exon 175698 175784 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377400"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 175698 175784 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377447"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 175698 175784 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382389"; exon_number "3"; NDR "0.521544337272644"; maxTxScore "0.478455662727356"; maxTxScore.noFit "0.478455662727356"; +9 Bambu exon 175698 175784 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382393"; exon_number "2"; NDR "0.330390512943268"; maxTxScore "0.669609487056732"; maxTxScore.noFit "0.669609487056732"; +9 Bambu exon 175698 175784 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382447"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 175698 175784 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000431099"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 175698 175784 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000465014"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 175698 175784 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000612045"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 175698 175784 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613355"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 175698 175784 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613508"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 175698 175784 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613988"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 175698 175784 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616944"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 177723 177820 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000314367"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 177723 177820 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382389"; exon_number "2"; NDR "0.521544337272644"; maxTxScore "0.478455662727356"; maxTxScore.noFit "0.478455662727356"; +9 Bambu exon 177723 177820 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000431099"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 177723 177820 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613355"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 177723 177820 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613988"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 178816 179047 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000314367"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 178816 179058 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000356521"; exon_number "1"; NDR "0.191389977931976"; maxTxScore "0.808610022068024"; maxTxScore.noFit "0.808610022068024"; +9 Bambu exon 178816 179147 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377400"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 178816 179025 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000377447"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 178816 179023 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382389"; exon_number "1"; NDR "0.521544337272644"; maxTxScore "0.478455662727356"; maxTxScore.noFit "0.478455662727356"; +9 Bambu exon 178816 179045 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382393"; exon_number "1"; NDR "0.330390512943268"; maxTxScore "0.669609487056732"; maxTxScore.noFit "0.669609487056732"; +9 Bambu exon 178816 179021 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000382447"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 178816 179018 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000431099"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 178816 179042 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000465014"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 178816 179012 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000612045"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 178816 179016 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613355"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 178816 179008 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613508"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 178816 179088 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000613988"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 178816 179052 . - . gene_id "ENSG00000172785"; transcript_id "ENST00000616944"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 212824 215741 . - . gene_id "ENSG00000183784"; transcript_id "ENST00000382387"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 212824 215741 . - . gene_id "ENSG00000183784"; transcript_id "ENST00000382387"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 214854 286636 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469197"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 214854 215029 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469197"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 214865 465259 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu transcript 214865 340620 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000524396"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 214865 215029 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 214865 215029 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000524396"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 214868 340620 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000454469"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 214868 215029 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000454469"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 215171 289579 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000479404"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 215171 215416 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000479404"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 220748 220863 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000524396"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 267966 273002 . - . gene_id "ENSG00000235880"; transcript_id "ENST00000429661"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 267966 268273 . - . gene_id "ENSG00000235880"; transcript_id "ENST00000429661"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 271627 271729 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 271627 271729 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000454469"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 271627 271729 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469197"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 271627 271729 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000479404"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 271627 271729 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000524396"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 272905 273002 . - . gene_id "ENSG00000235880"; transcript_id "ENST00000429661"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 273048 465259 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 273048 273100 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 273050 340620 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382341"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu transcript 273050 304703 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000487230"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 273050 273100 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382341"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 273050 273100 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000487230"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 273059 381387 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 273059 273100 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 273066 312941 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000478380"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 273066 273100 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000478380"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 273070 464526 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 273070 273100 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 273084 465241 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 273084 273100 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 276994 277086 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469197"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 280791 280905 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000487230"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 284375 284567 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469197"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 286461 286636 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382341"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 286461 286636 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 286461 286636 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 286461 286636 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000454469"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 286461 286636 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469197"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 286461 286636 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 286461 286636 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000478380"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 286461 286636 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000479404"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 286461 286636 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 286461 286636 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000487230"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 286461 286636 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 286461 286636 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000524396"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 289510 289581 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382341"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 289510 289581 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 289510 289581 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 289510 289581 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000454469"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 289510 289581 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 289510 289581 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000478380"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 289510 289579 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000479404"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 289510 289581 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 289510 289581 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000487230"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 289510 289581 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 289510 289581 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000524396"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 304581 304704 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382341"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 304581 304704 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 304581 304704 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 304581 304704 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000454469"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 304581 304704 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 304581 304704 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000478380"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 304581 304704 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 304581 304703 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000487230"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 304581 304704 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 304581 304704 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000524396"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 311954 312166 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382341"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 311954 312166 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 311954 312166 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 311954 312166 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000454469"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 311954 312166 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 311954 312941 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000478380"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 311954 312166 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 311954 312166 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 311954 312166 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000524396"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 311958 314466 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000474772"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 311958 312166 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000474772"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 314292 314466 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000474772"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 317043 317128 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382341"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 317043 317128 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 317043 317128 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 317043 317128 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000454469"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 317043 317128 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 317043 317128 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 317043 317128 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 317043 317128 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000524396"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 325671 325737 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382341"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 325671 325737 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 325671 325737 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 325671 325737 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000454469"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 325671 325737 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 325671 325737 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 325671 325737 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 325671 325737 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000524396"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 328022 328171 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382341"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 328022 328171 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 328022 328171 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 328022 328171 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000454469"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 328022 328171 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 328022 328171 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 328022 328171 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 328022 328171 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000524396"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 332398 332478 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382341"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 332398 332478 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 332398 332478 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 332398 332478 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000454469"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 332398 332478 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 332398 332478 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 332398 332478 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 332398 332478 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000524396"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 334225 334384 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382341"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 334225 334384 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 334225 334384 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 334225 334384 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000454469"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 334225 334384 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 334225 334384 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 334225 334384 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 334225 334384 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000524396"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 336582 336718 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382341"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 336582 336718 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 336582 336718 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 336582 336718 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000454469"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 336582 336718 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 336582 336718 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 336582 336718 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 336582 336718 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000524396"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 339006 339099 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382341"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 339006 339099 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 339006 339099 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 339006 339099 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000454469"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 339006 339099 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 339006 339099 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 339006 339099 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 339006 339099 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000524396"; exon_number "14"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 340159 340620 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382341"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 340159 340321 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "14"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 340159 340321 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 340159 340620 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000454469"; exon_number "14"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 340159 340321 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 340159 340321 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 340159 340321 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 340159 340620 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000524396"; exon_number "15"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 365591 366552 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "14"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 366229 405099 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382331"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 366229 366552 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382331"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 366251 465255 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 366251 366552 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 368018 368300 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 368018 368135 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382331"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 368018 368135 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "15"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 368018 368135 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "14"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 368018 368135 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "14"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 368018 368135 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "15"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 368018 370300 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "14"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 369222 369447 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "16"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 370230 370300 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 370230 370300 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382331"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 370230 370300 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "16"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 370230 370300 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "15"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 370230 370300 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "15"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 370230 370300 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "17"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 371428 371566 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 371428 371566 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "17"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 371428 371566 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "16"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 371428 371566 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "16"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 371428 371566 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "18"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 371428 371566 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "15"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 372185 372286 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 372185 372286 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382331"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 372185 372286 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "18"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 372185 372286 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "17"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 372185 372286 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "17"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 372185 372286 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "19"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 372185 372286 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "16"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 376210 376305 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 376210 376305 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382331"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 376210 376305 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "19"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 376210 376305 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "18"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 376210 376305 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "18"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 376210 376305 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "20"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 376210 376305 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "17"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 376977 377211 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 376977 377211 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382331"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 376977 377211 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "20"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 376977 377211 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "19"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 376977 377211 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "19"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 376977 377211 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "21"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 376977 377211 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "18"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 379771 379935 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 379771 379935 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382331"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 379771 379935 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "21"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 379771 379935 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "20"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 379771 379935 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "20"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 379771 379935 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "22"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 379771 379935 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "19"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 380279 381387 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000483757"; exon_number "23"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 382513 382685 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 382513 382685 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382331"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 382513 382685 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "22"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 382513 382685 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "21"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 382513 382685 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "21"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 382513 382685 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "20"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 386331 386426 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 386331 386426 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382331"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 386331 386426 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "23"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 386331 386426 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "22"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 386331 386426 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "21"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 390471 390566 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 390471 390566 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382331"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 390471 390566 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "24"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 390471 390566 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "23"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 390471 390566 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "22"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 390471 390566 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "22"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 396785 396934 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 396785 396934 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382331"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 396785 396934 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "25"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 396785 396934 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "24"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 396785 396934 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "23"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 396785 396934 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "23"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 399146 399259 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 399146 399259 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382331"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 399146 399259 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "26"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 399146 399259 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "25"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 399146 399259 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "24"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 399146 399259 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "24"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 404918 405073 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "14"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 404918 405099 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382331"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 404918 405073 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "27"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 404918 405073 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "26"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 404918 405073 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "25"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 404918 405073 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "25"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 406930 407069 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "15"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 406930 407069 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "28"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 406930 407069 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "27"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 406930 407069 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "26"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 406930 407069 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "26"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 414782 414951 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "16"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 414782 414951 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "29"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 414782 414951 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "28"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 414782 414951 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "27"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 414782 414951 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "27"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 418068 418207 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "17"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 418068 418207 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "30"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 418068 418207 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "29"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 418068 418207 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "28"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 418068 418207 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "28"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 420116 426953 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000493666"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 420116 420180 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000493666"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 420401 420583 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "18"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 420401 420583 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "31"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 420401 420583 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "30"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 420401 420583 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "29"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 420401 420583 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000493666"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 420401 420583 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "29"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 420949 421078 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "19"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 420949 421078 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "32"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 420949 421078 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "31"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 420949 421078 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "30"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 420949 421078 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000493666"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 420949 421078 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "30"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 422048 422135 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "20"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 422048 422135 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "33"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 422048 422135 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "32"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 422048 422135 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "31"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 422048 422135 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000493666"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 422048 422135 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "31"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 426885 426981 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "21"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 426885 426981 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "34"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 426885 426981 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "33"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 426885 426981 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "32"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 426885 426953 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000493666"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 426885 426981 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "32"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 428362 428496 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "22"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 428362 428496 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "35"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 428362 428496 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "34"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 428362 428496 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "33"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 428362 428496 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "33"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 429702 429854 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "23"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 429702 429854 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "36"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 429702 429854 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "35"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 429702 429854 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "34"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 429702 429854 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "34"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 432166 432324 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "24"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 432166 432324 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "37"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 432166 432324 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "36"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 432166 432324 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "35"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 432166 432324 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "35"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 433875 433975 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "25"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 433875 433975 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "38"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 433875 433975 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "37"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 433875 433975 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "36"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 433875 433975 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "36"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 434783 434975 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "26"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 434783 434975 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "39"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 434783 434975 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "38"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 434783 434975 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "37"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 434783 434975 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "37"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 439245 439388 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "27"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 439245 439388 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "40"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 439245 439388 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "39"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 439245 439388 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "38"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 439245 439388 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "38"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 441286 441417 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "28"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 441286 441417 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "41"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 441286 441417 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "40"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 441286 441417 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "39"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 441286 441417 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "39"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 441875 442009 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "29"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 441875 442009 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "42"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 441875 442009 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "41"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 441875 442009 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "40"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 441875 442009 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "40"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 443427 443516 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "30"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 443427 443516 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "43"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 443427 443516 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "42"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 443427 443516 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "41"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 443427 443516 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "41"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 446370 446606 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "31"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 446370 446606 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "44"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 446370 446606 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "43"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 446370 446606 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "42"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 446370 446606 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "42"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 449784 449927 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "32"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 449784 449927 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "45"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 449784 449927 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "44"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 449784 449927 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "43"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 449784 449927 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "43"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 452011 452117 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "33"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 452011 452117 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "46"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 452011 452117 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "45"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 452011 452117 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "44"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 452011 452117 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "44"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 452492 469836 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000591577"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 452492 452948 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000591577"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 452493 456207 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000628764"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 452493 452948 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000628764"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 454304 492248 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000415004"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 454304 454606 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000415004"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 454432 456988 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000585944"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 454432 454606 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000585944"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 454439 454606 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000591577"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 454447 469802 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000589287"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 454447 454606 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000589287"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 454507 454606 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000628764"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 454576 469802 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000589387"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 454576 454606 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000589387"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 454585 470961 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000586805"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 454585 454606 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000586805"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 456201 460507 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000585631"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 456201 456703 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000415004"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 456201 456703 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000585631"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 456201 456988 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000585944"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 456201 456703 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000586805"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 456201 456703 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000589287"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 456201 456703 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000589387"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 456201 456703 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000591577"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 456201 456207 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000628764"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 456204 470816 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000593137"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 456204 456703 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000593137"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 456211 460227 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000590240"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 456211 456703 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000590240"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 456518 467390 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000592805"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 456518 456703 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000592805"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 456521 470934 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000585819"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 456521 456703 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000585819"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 456530 466866 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000588474"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 456530 456703 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000588474"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 456545 467336 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000590518"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 456545 456703 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000590518"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 456915 457047 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000585819"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 456915 457047 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000588474"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 456915 457047 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000590518"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 456915 457047 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000593137"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 457004 467219 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000588989"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 457004 457047 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000588989"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 458117 458281 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000590240"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 458370 458423 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000590240"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 459716 466065 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000608617"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 459716 460507 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000585631"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 459716 459866 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000585819"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 459716 459866 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000588474"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 459716 459866 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000588989"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 459716 460227 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000590240"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 459716 459815 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000608617"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 463517 463687 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "34"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 463517 463687 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "47"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 463517 463687 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "46"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 463517 463687 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "45"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 463517 463687 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "45"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 463555 465247 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000462618"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 463555 463687 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000462618"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 464159 465255 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000382329"; exon_number "35"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 464159 465259 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000432829"; exon_number "48"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 464159 465259 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000453981"; exon_number "47"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 464159 464278 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000462618"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 464159 464526 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000469391"; exon_number "46"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 464159 465241 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000495184"; exon_number "46"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 465073 465247 . + . gene_id "ENSG00000107099"; transcript_id "ENST00000462618"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 465962 466069 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000585819"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 465962 466069 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000588474"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 465962 466069 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000588989"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 465962 466069 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000589387"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 465962 466069 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000590518"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 465962 466069 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000591577"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 465962 466069 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000593137"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 465962 466065 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000608617"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 466688 466866 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000588474"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 466688 467219 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000588989"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 466688 466853 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000589287"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 466688 467390 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000592805"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 466900 467336 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000590518"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 469722 469802 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000589287"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 469722 469802 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000589387"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 469722 469836 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000591577"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 470291 746105 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382303"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 470291 470374 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382303"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 470556 470682 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382303"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 470592 484491 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000467541"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 470592 470677 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000467541"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 470765 470934 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000585819"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 470765 470961 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000586805"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 470765 470816 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000593137"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 471449 471586 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000467541"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 471467 476769 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000475690"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 471467 471586 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000475690"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 473194 473273 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382303"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 473194 473273 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000467541"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 473194 473273 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000475690"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 476628 476769 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000475690"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 477750 478423 . + . gene_id "ENSG00000235330"; transcript_id "ENST00000598100"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 477750 478423 . + . gene_id "ENSG00000235330"; transcript_id "ENST00000598100"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 477856 478349 . + . gene_id "ENSG00000235330"; transcript_id "ENST00000455592"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 477856 478349 . + . gene_id "ENSG00000235330"; transcript_id "ENST00000455592"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 484282 484491 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000467541"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 487774 495610 . + . gene_id "ENSG00000228115"; transcript_id "ENST00000442442"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 487774 487803 . + . gene_id "ENSG00000228115"; transcript_id "ENST00000442442"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 488957 489066 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000415004"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 492084 492248 . - . gene_id "ENSG00000227155"; transcript_id "ENST00000415004"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 495238 495610 . + . gene_id "ENSG00000228115"; transcript_id "ENST00000442442"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 504695 746106 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000619269"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 504695 504754 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000619269"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 504702 746103 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000489369"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 504702 504754 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000489369"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 504703 734129 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000354485"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 504703 504754 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000354485"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 504716 746105 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382297"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 504716 504754 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382297"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 539516 539633 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382303"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 540508 540667 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382303"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 547317 549531 . + . gene_id "ENSG00000226403"; transcript_id "ENST00000441028"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 547317 547341 . + . gene_id "ENSG00000226403"; transcript_id "ENST00000441028"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 547318 549531 . + . gene_id "ENSG00000226403"; transcript_id "ENST00000444793"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 547318 547341 . + . gene_id "ENSG00000226403"; transcript_id "ENST00000444793"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 549107 549531 . + . gene_id "ENSG00000226403"; transcript_id "ENST00000444793"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 549107 549721 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000619269"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 549190 549531 . + . gene_id "ENSG00000226403"; transcript_id "ENST00000441028"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 558826 558930 . + . gene_id "ENSG00000202172"; transcript_id "ENST00000365302"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 558826 558930 . + . gene_id "ENSG00000202172"; transcript_id "ENST00000365302"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 659986 660326 . + . gene_id "ENSG00000229875"; transcript_id "ENST00000421436"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 659986 660326 . + . gene_id "ENSG00000229875"; transcript_id "ENST00000421436"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 673478 685555 . - . gene_id "ENSG00000227914"; transcript_id "ENST00000421645"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 673478 674379 . - . gene_id "ENSG00000227914"; transcript_id "ENST00000421645"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 674124 677628 . - . gene_id "ENSG00000227914"; transcript_id "ENST00000608097"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 674124 674379 . - . gene_id "ENSG00000227914"; transcript_id "ENST00000608097"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 676890 677009 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000354485"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 676890 677009 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382297"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 676890 677009 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382303"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 676890 677009 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000489369"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 676890 677009 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000619269"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 677542 677628 . - . gene_id "ENSG00000227914"; transcript_id "ENST00000608097"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 680857 681046 . - . gene_id "ENSG00000227914"; transcript_id "ENST00000421645"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 685528 685555 . - . gene_id "ENSG00000227914"; transcript_id "ENST00000421645"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 706889 746103 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382293"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 706889 707247 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382293"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 710804 713464 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000354485"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 710804 713464 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382293"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 710804 713464 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382297"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 710804 713464 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382303"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 710804 713464 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000489369"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 710804 713464 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000619269"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 730051 734129 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000354485"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 730051 730248 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382293"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 730051 730248 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382297"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 730051 730248 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382303"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 730051 730248 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000489369"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 730051 730248 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000619269"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 731158 731266 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382293"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 731158 731266 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382297"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 731158 731266 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382303"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 731158 731266 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000489369"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 731158 731266 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000619269"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 732378 732617 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382293"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 732378 732617 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382297"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 732378 732617 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382303"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 732378 734835 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000489369"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 732378 732617 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000619269"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 732442 746102 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382289"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 732442 732617 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382289"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 734748 746104 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382286"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 734748 734835 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382286"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 734748 734835 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382289"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 734748 734835 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382293"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 734748 734835 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382297"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 734748 734835 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382303"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 734748 734835 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000619269"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 735712 735780 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382289"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 738285 738504 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382286"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 738285 738504 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382289"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 738285 738504 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382293"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 738285 738504 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382297"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 738285 738504 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382303"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 738285 738504 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000489369"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 738285 738504 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000619269"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 740792 740934 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382286"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 740792 740934 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382289"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 740792 740934 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382293"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 740792 740934 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382297"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 740792 740934 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382303"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 740792 740934 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000489369"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 740792 740934 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000619269"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 742205 742405 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382286"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 742205 742405 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382289"; exon_number "6"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 742205 742405 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382293"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 742205 742405 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382297"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 742205 742405 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382303"; exon_number "14"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 742205 742405 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000489369"; exon_number "9"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 742205 742405 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000619269"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 744491 746104 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382286"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 744491 744589 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382289"; exon_number "7"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 744491 744589 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382293"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 744491 744589 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382297"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 744491 744589 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382303"; exon_number "15"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 744491 744589 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000489369"; exon_number "10"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 744491 744589 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000619269"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 745173 746102 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382289"; exon_number "8"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 745173 746103 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382293"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 745173 746105 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382297"; exon_number "12"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 745173 746105 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000382303"; exon_number "16"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 745173 746103 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000489369"; exon_number "11"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 745173 746106 . + . gene_id "ENSG00000107104"; transcript_id "ENST00000619269"; exon_number "13"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 841690 969090 . + . gene_id "ENSG00000137090"; transcript_id "ENST00000382276"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu transcript 841690 894985 . + . gene_id "ENSG00000137090"; transcript_id "ENST00000564322"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 841690 842192 . + . gene_id "ENSG00000137090"; transcript_id "ENST00000382276"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 841690 842192 . + . gene_id "ENSG00000137090"; transcript_id "ENST00000564322"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 842714 968515 . + . gene_id "ENSG00000137090"; transcript_id "ENST00000569227"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 842714 842954 . + . gene_id "ENSG00000137090"; transcript_id "ENST00000569227"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 846960 847143 . + . gene_id "ENSG00000137090"; transcript_id "ENST00000382276"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 846960 847143 . + . gene_id "ENSG00000137090"; transcript_id "ENST00000564322"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 846960 847143 . + . gene_id "ENSG00000137090"; transcript_id "ENST00000569227"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 893912 894195 . + . gene_id "ENSG00000137090"; transcript_id "ENST00000382276"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 893912 894985 . + . gene_id "ENSG00000137090"; transcript_id "ENST00000564322"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 893912 894195 . + . gene_id "ENSG00000137090"; transcript_id "ENST00000569227"; exon_number "3"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 916763 916907 . + . gene_id "ENSG00000137090"; transcript_id "ENST00000382276"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 916763 916907 . + . gene_id "ENSG00000137090"; transcript_id "ENST00000569227"; exon_number "4"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 967985 969090 . + . gene_id "ENSG00000137090"; transcript_id "ENST00000382276"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 967985 968515 . + . gene_id "ENSG00000137090"; transcript_id "ENST00000569227"; exon_number "5"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 976964 991731 . + . gene_id "ENSG00000064218"; transcript_id "ENST00000190165"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 976964 977455 . + . gene_id "ENSG00000064218"; transcript_id "ENST00000190165"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu transcript 989837 990333 . + . gene_id "ENSG00000064218"; transcript_id "ENST00000417254"; NDR "NA"; txScore ""; txScore.noFit ""; +9 Bambu exon 989837 990333 . + . gene_id "ENSG00000064218"; transcript_id "ENST00000417254"; exon_number "1"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; +9 Bambu exon 990041 991731 . + . gene_id "ENSG00000064218"; transcript_id "ENST00000190165"; exon_number "2"; NDR "NA"; maxTxScore "NA"; maxTxScore.noFit "NA"; diff --git a/inst/extdata/extendedAnnotationGranges_txdbGrch38_91_chr9_1_1000000.rds b/inst/extdata/extendedAnnotationGranges_txdbGrch38_91_chr9_1_1000000.rds index 68b9c92a3c52bb95c49ef644da8101c5cccccc1b..f76b785028631407e0d8f3bd14fc89c760cec56a 100644 GIT binary patch delta 4510 zcmV;P5n=A2BY-5383dKj5yX)lcYmDcjs?e`(=)sgToMw(7xYpjMd$=+#DLzQrU4IT zY<}yvLw1+~h75j#B#B!!_!oWIG8ur9=Z%iszLj?CnbesP0uXa>tqm2eGuW-lspnaU z2V~;`#cEGV6T9JOtf$^VXaZC2oS|&NEK69s5Je_Kp}tF8wXeRy7(jUldw&Bp?TmZQ|RdvZDD%Ck~**4 zgVMp=!D**M-+#$D z;wux3Tt~nYj>{-&JKov0hv-eyT56abrgfiu7{mA2r%j*HBIL1s_s+Ll?Drzo_{K*a z-`5R0H-gtG{?*0WKSlsriD1zrncb|4T&8I)zLD;l5K0>6;^HE>M0ODk0_y-LYT3`b zxQ|J2v@o*uTzoQm#nB%zI=p%gW2l%WHy+KIQ$t|5Z_X=hzyE}t1 zx_Ox)J;-ZN0v838gE9h2>oDnRQp@m%WJE~Rw0bo^g=Uu033`X!w|swa(3(C~YNSYe zIt(g!b%BE#M30G#f%Xc--4sATdSB+8Gc9}L?rgOZtTRhrK!3y$c<5KSa3ca^i!Zti)8ikE1`jaYZUbyWTD16&^|I`NWIyR<{I0OU6M$aB z2@^ksC80kNNZ$=@U-#joSnA|H(I>822t(n+vJZPern)N0v%Cq7ou3~LK2m%bAvj$; zFe`6yOyH#prgR#1$vuS1Go>$80TFnt%3~zJD+asTL@(F-!^IkxZ?E zq@7q)Nx*SpR_-;;eyxS$i-I6dSxP3ho;cnTYp`_xKu@{I^7O@vVz79<>lAzcqR72^ zcS6E*Vj6pFB39KRW8rNVv#9eRW@b2!cP2C#ssx$=l!5MN8uAIif}}t#*ZQ?zARB0A z&Vm+HJb$F(T zt)A&0iRS$BeX+MSr7Ka%Rv|^@tF?_~oqQX*8#YWjz_30EErjK#OHlQfPM>Td4G^#%0J3lSrH_p&y)?1ntONU6L8tu zT6C|5w<2f3_zrA?`GenzdIbFa<;1Sld{a;XD0C0r;;HrQi!KYPNdFx`&B*n2C&z~Y%+yHr zNVIa~tyR{#i6Sn2&Ime&1S~@r zRiOa-+v73wnwCUbs9Qoq;!CQwL434iyI_BuM?-u<;<`kvwURW;!c$(Q-cwCD4P znR}FWcv0jo$q6tCRayr`dA_uU@;IwE&5Y1g1TT4*TU%E{$G;sI4n`dclpV;Gf;q(5 zUR)HBP1O2KYm2)AHZBqTuJ)gX6K~Rp`&gL$4l6tC_-|AmF6(N*tF>xazdXF7nt!oA zm*JINwv$}@r^)x3f7rMlp0LZ?EE&oYn8ivB$4OORXfk@*(-e-C`!n#tP^`Jzkl?bC zuR1Ng7CTQJTR~}sjj_!D)ty~~hyqZO$o8AwXK?3u!tQReMZWj!1p^MqJsWK~l7(W) zF8fN+!E8^AoO&R98>P9G!cctSe}8aW-nwjJfNymSW>Q?Qo2|Jv$f%$cGv}xw9=!)b z|CN5v`rUwplD83DBLH z8+0#j+fqV*w4skXx9CQLp#0W5N0|z7Umv~4LCPa48te~UU z_|)Cx0};t|coUD$S7flRJhb#uOTy) z-c6kLKq1{rn1|GoLZ!1m&eKxQ`Qe*pjK-fpZ5W5-Lh}2<;s{nE*)2N3;Ztk1?R+1D z#z;CGNLI{dbKmm!CxXQ5Lkby#@U8hF_WZTL9;X5s(Bbb4_;C@kbbtTF7O4@Np|P75 znK)d$TCP*~G^6&Oc%LDbv0q(ADY!u<;*#~+{H+yYtDbnX;{*XaWnT=`$V)BR#^E$< z$5Rdm7X2K+@wXVR*+SgR=To^_>vYS#IxmW8%M;a^$po z+QH1bK(@AN@-uLqbbpcPRI{aCi}i!*G(8_;Cr?Z$i0UM9T_T=6W19b>6CwNv_2b7Q z;3Y`9JvZu*zs+j3?7JvlZVh-*moE9nH*ZaCI1*#xN4ryMi#Stnf}a#5Lti6j0Robl zH~NJYz;CqkqIgVc0iBl!Uu>(r=E7o1DZeCQu1zV5ZTVpPS$}U(uJr%#)(%t@InJ@^ zgk3-!fqVkpV+Z23#-S41&bN(AqB^$ULsHoyr6?plFXB&b%{dJL%7Zk~PwCms$E57I zkc6RrH2?63 zZQR?jIyw}gCt*(N72G-Jo%_p)Ur+->tTR<8KpAQ9*Mr_aCZCld?r3MoI&N7MpTs%=b=R>P+;?0|!9@ z8iWkl!y%6mZ_x>@KB7StJBAK1Xcsx{wd)6Hmw%^Ua$5M>9$kH6Htw`RA(0$M*Z&{< zY8u*C!OjPeDm?X6{Crl)^rggHHUbB|&}@7EEZhL&v=gD?1#H8mZH+z`8-In`%fRf@d$#SHxzQ^>FDMzkbdGA!#PE z)2fr0-1j0)FZ1z~&4j|IM(E9?taDn^*?-p5{b!^Ynl@iz^h?}ZGt6Z+EKD89OTb9pG!03**64`7#xEth@KQ`cvEIZQQw?;V>F+t%htOMf-i zBy_-Pp#o~$zEuS#Ec*n}?6qKc&}vA4;#zG5r+vG7S8Cl5@JRK1`!CO2E2p7l80WBy zmW~YTgSjr|``xVxpykGLrVME>o>AtnWTUb0h6OlxVQoOQ&K%@8LL+MZ^SPtVj~W$< z$2)fmsdlVquzFF7R;v-#R0(MVgnuH~ltvR_z>?2HdZIXsA!m3f%RWHRla)N^A}nEt zD;}lD#$WA9u=gn0;syVyzjPu8Xph&MeiKZnspNeVXX(Tl2!E*+qg*y05aO7#c6zm-=dsHdf~B~v`I8o_sY+>a z)*CiB>mQT{(Fdr`pHBF;jCp%}bsZn_wF@V>w-X>eDU1Y3|Af0B(q|M3BNhK}R)0Yq6dllS^_jQBw?+1`0yf%Gg=s&fv{RW0s^ z^&)yswgQu7T)ai011K{=U?exFvzMoH?5NvJ#8^qJO!Wv(0COw-DF^iGejUxn_Y~^s2E`RTjFE$cwo4_9Z?@ z67A3DhGU|!3O_tHlxw@FrJ-&5Vm&s;3lCRh@5z#nkvF#-LcEn`#T;1ZVHlPPnMTeJ z2JqR8(a`hYc*W_&y??u@p}O>j-SywYj6EN<&F#Ut$vdPoD9CLb476MlGh(p z7!9GT3|2GSRy-K0Fp1m}`l}tGOCQAq;LhH$f~H;cu`6l00J!|{axdG~4zMDs2(2(c zAtDbkHc;slz-7Mr9Ffk;XVXVWq33E z`jZ%E1taPA86^^ubMYsfL$TW}ymLvHs(ZcLQ}EBwi`C#llWH!L!|K7i5#gQVmZL{# z_i(@+RM^Ax`GukXhfkM+Lx1G1rG6?toR~(9NQu%i+O;;QJR(A(POp7*{S}pM88~e$ zP+fjvx^3WrJAXs$nIAEon~?_*`JG9j0Qc^8spW*c57V|_V1yLdJB=jgbnRkTzH2P# zjiR*>O>A%Az&Lukl)`;GN0p#wRiNsxRvaSB7}O-g-rtu>sm{>p3RE$JVjB0<7VBkbf-3{2<2c8`%NPPrknwTeZyY zNI-IYa%0h@77HvUHFQw8>)M_}+W&-pq?jKRmGkloHgP9Q%t8x(y9hHPnc85zO?}Ov zP&Kn_P4}(AV-{fICX1|-KVD&CE;WJ wQ>w@E$6hGYrsFqi!6pCzI$D)i00G=1(5nIf#}71z;XW`8ivj=u00045T5dYSZvX%Q delta 4413 zcmV-D5yI|(B%mXZ83dEo5oD1acYinXZId4aMKw&og`jWYUZLZ!{uUgoYg*FY1@AhK zqCpL6QX_XgDA70_d99jfn3E42uz`O<$1$6qHQI}IYX-GBQ6f{e&aAT{5t~d4o6SmB@e^VR7dYf!tUK zE{ud5GwI(6=SAE2E?~~t)_-H~V|dma+5x+$As&EpJrj+zyGF9~>u^9L{>P`Zea&XW z?h{#DJ9e`t>|-G$T4i=ffc`!>f(&80B1Qp6^aF~;0>d|Hl=u|WmIohIhBlklsY)(2 zfiu8YC3Zsk7)m(*eRTwDArxdLP;QWGLD{A)X5Tct-l90f4V4+QU4J~o|1Nb;M=8X) z$?AJ_GFL|wZv^sar;>N}g30K-L^>k;Sm-qYt{#k!CLI>PI4Id@6C=;T|;_P;3E$s+7fw?o*6~ z^Gnb(;13W??6UA!Q-8F9yc7m(T69;?(fvsB+z}EhUCj_mZkwYx`xse(`%FdXX*G=D zwBCqPO!ws0-hR@shKAEZ>iW8}nb}0*jD{yr@EHF0i?!WIaV!Yn9fkVd#Zh7z`)=$r z_~VD@aDAJE1=XUmVc5?wR-oSITG*mUyI@x zQ%+}pZA|5#<|?r;qOZugSRIEM!2xyxO#kcamnoyaJ1Nha++2T_7ymrCY9_ zMDNf6EZVY^WUA{m+&?@Xxj{3nP{e5wbc;@enq$U!tkJSivkb^Qvp$tgRG)DqOpAm0 zY@_PsHh*+y7D2aF;h&01MvP4HM70(V1dInWVxCcHpjZr0=_-fBoH72K6VyDTQoa{C z``@1Rw0*+<5tHIp_al7*#XtAzg0#ckybxYpT4-PRb4v2(^ivfWYG(z35t&z1aoBaC zLE&IR!rKRK<>DJPA?H*G#Tv5FVtDA5BfN*fH-Ag(3(G6 zlO@OT^YP|;eTu8$NJH80pc~oLB!^+?0J0FC;~~-$7vJH4*;W|lQr~koEQQ|=Sg)){ z-c^kLNzsh!AJvrssag8$@r3D6<0w#_P?r&JVIL2sGHsvsaIRsp_T96EXNq?zL0M>O z(Zmf)zMm*k$`xN6MC>GM%-yHS>GO8@e{|gkm+up>a?(pX$lO+~!~=PEqjBW52D&9i zyJc=%6*GmM_b0v9OG^O$*1}h@mi?*`-G6v}=R($1F1xA*y>HYZO9c2m2(Pe^?(8F7 z7{KHjMIxyd^Yy+Taef_0IT18{^_CA(;D2QuBF_H!96x-E%Qb}4lDG|uFwi-Ju7B;L%DKt)sVCQh$ycbV`UP7;zqB*RF@bsHSUF4Aipp9ala_>!N+F zN(Cg{8oOD%!Mb@Y%DaJv5b0EMn#A50#H%w<`Da?tF60Aa=1$8BcisjQ)S1tYW#l$s z$x)-TT0hZrUCyY*4lFX#d_M9ztwTZ#A^)p=Etz8q;I2O?*4L>{8RDTmw$O9CK;O-ZsT%{{ zNfU8muGO;)`|y;=d_j5Yb!UEKzITv*bAGA3WvEL#PCv@$a)Ipe@*k|iSt|?IYeNG! z3G6>a^#&dDe=}-8-p@4dL>xg?(X#j^14k{b|>b3J)IN|3jdBNQVdZ@(aG$MCnWtGaeOZiWG;o%=?fEos} zu`5u<*{Fi$ACPmb3?zX=)oIU-UnU5%anQujVpkcw4HV+Qc7O6}B z2Q%1YSZ*3gyONx~41aM8uno)UVQgoqy}H?4(ypEf7diw=vQz4cdB$Xb9wDkR7`^$3 znnr-m)|(x8cyvTQlzxSHkn5Tg-;mB3vzqc6B5<6gFXU5<#V%Qt$vGr152@Qfr3d9V z6FTsDJO*mBR~tW#_9{VFFJaB3<|P<0W6sEL>*u<#MNG=9=zlC3*Iv!KaITysUK}_r z-=8aDoTY4OpY$Hja<5$@W5=S}%_~x8)K7Dj-*r21BXwsb0R!GYz zcS14Iy7R{pNU3PmjFj)TJXl!KnnZ^PXy)=cOINLnRC-IL^K+V7xFs_?XZpn0a%JHP zTCo+vVYVA})ZJfrIE)Jl7%&iYr){t@+~#4#+5uoqcz>pv58i@_{;2&?OfohiQFoz( z70|B|BCQUVBjDd9xijP<9BRqHvv=6XSRYF;r{D7X4jjs&CT0KA-`C--*gf00A=WG` z5Av{}YOl$NE`-*h15r#zUF04I znKvPK?0r_xnW{As4fP8`LijXNkktkxpZLeUN^YygTjkN}?*#7>p4CNyI;((7?|&{V z>a)QVZu=peG*DGoqa)Fy+%;XFw1>!;-VBHJPiCHoBhvd<#PQV@UC6aZKtgoxtFKhk z3cM{^htquxi!bcHx{nOKz>d4R)V~IPmj%9wzr+{|>2&?DUYnDX5OR@Si#iKvvQnS0 zFgUMN%k$D;TWaf#AG^~L+$)d&S%1?>FRgafV?zcyzYN&PCrcmEXJ?JPCo*><{afO0 zyQ7VvQ=x@mkCTeXj#HrzhTs?gFg+nio{?L(YcvJSF)GLPPg(Gp;Oc$RwLF0{-dyb~ zv%cQ}eQrFhq|r>=3c1tpCdnoesr@#<$pLPIz`$e1DN^sJ+#|I#u2>3D#ed(}<+N_O zivkOc>UW@tjmkHMe0p)j7#7tfAU+G(i&liLQ}Ek&$HRSY>s6u3BwDB1PU{e?+3ZkN zw;$%w&Z*{~Tc=~gXbH?*8nLwjh+Ed8dJ7WuCHaWfcAP}G@zEcT{Z-1n&MK%vQb&7t zs$+mj?ufMlPf)< zYY+h{#F_FQz*V=`hB#@Er9rD1Sba=z;rn@d~ls4pi z9;4Kk%d9H2@Bw9cYsYSRkEQ)ID9CW7__yPX1fkZ(u|k+Ld#vvv4}avZbh6o!6YBB6 zCxO%Qim2_iC+d-p3WG&wRuk8sNc_qT3h5piO}I`Udi#9}jDTK%FbW`JK3+Zgf?Vp?+VIVS`)rhJNpV& zOWzu6E($vsgi-BGHGh5|n!_vQ>Q%sUtA*GcFD_yC%{U^?n<0c#Bt{*OQ}!Uj^TtHZ z!CMFVoY?tkW~Of~^zs^rE8Jvk$M6IohE1iMexo}SC8tK&0?jj#*gd>iIYG-d4?)=D z3Fg{`vQ#1DZThBg6>b0q{L8>3X~tzQ_?yT~tKH4p5dIAH34da7U))};$ArpiXVD)L zxT2PTLc4DV_3T8X`AyXFB#cn~%r7?Ij#^3n2FZETLtW{gAvMA73>fTJd=`rLA(fk; zcA#|_UIWk<6AN6w5FC?lan{ExAh3i6|OFzJodX(W4?8Sw_(_PBtrG{x$j&z z!Q)vM_i**gGJgVWCWVjMRgm1e6co*L%EfIjnMH=Ib?N3QHZp+D232~gd_JYGln4KI z$mNN^p(|PoIZ;pf)5v!cX17o4p3$br$3$=V0)&-6bJuScmYYL>*}Q2EG2_aG2m~Fi zmP-q^a1dA$1D?14#`n)}-$b^iShw3{?+Xen@--A??|-u}@XQksG`xCRD?0ovE5&!z z%2GE*Ts7{vl8E9cKSqPa1DiJ8vo1BBsD`)Q9jyK@G4SJrK>z>%gbZMZ00I0W*QWvioY{s?J}?c70ssI200CKA Dzy_bZ diff --git a/tests/testthat/test_prepareAnnotations.R b/tests/testthat/test_prepareAnnotations.R index f9c65007..97903eeb 100644 --- a/tests/testthat/test_prepareAnnotations.R +++ b/tests/testthat/test_prepareAnnotations.R @@ -150,6 +150,14 @@ test_that("eqClassById is correct", { expect_true(all(check$validate)) }) +test_that("prepareAnnotations reads in the NDR, txScore and txScore.noFit correctly", { + extendedAnnotationsExpected <- readRDS(system.file("extdata", "extendedAnnotationGranges_txdbGrch38_91_chr9_1_1000000.rds",package = "bambu")) + extendedAnnotations = prepareAnnotations(system.file("extdata", "extendedAnnotationGranges_txdbGrch38_91_chr9_1_1000000.gtf",package = "bambu")) + expect_equal(mcols(extendedAnnotations)$NDR, mcols(extendedAnnotationsExpected)$NDR) + expect_equal(mcols(extendedAnnotations)$txScore, mcols(extendedAnnotationsExpected)$txScore) + expect_equal(mcols(extendedAnnotations)$txScore.noFit, mcols(extendedAnnotationsExpected)$txScore.noFit) +}) + # test_that("eqClass and eqClassById matches", { # gr <- readRDS(test_path("fixtures", "grGTF.rds")) diff --git a/tests/testthat/test_readWrite.R b/tests/testthat/test_readWrite.R index 7223c1fb..84eb0219 100644 --- a/tests/testthat/test_readWrite.R +++ b/tests/testthat/test_readWrite.R @@ -94,3 +94,17 @@ test_that("readGTF can generate a GRangesList from a GTF file", { expect_s4_class(gr, class = "CompressedGRangesList") expect_named(mcols(gr), c("TXNAME", "GENEID")) }) + +test_that("writeToGTF writes the NDR, txScore and txScore.noFit correctly", { + extendedAnnotationsExpected <- readRDS(system.file("extdata", "extendedAnnotationGranges_txdbGrch38_91_chr9_1_1000000.rds",package = "bambu")) + + writeToGTF(extendedAnnotationsExpected, test_path("fixtures", "grGTF.rds")) + + extendedAnnotations = prepareAnnotations(test_path("fixtures", "grGTF.rds")) + + expect_equal(mcols(extendedAnnotations)$NDR, mcols(extendedAnnotationsExpected)$NDR) + expect_equal(mcols(extendedAnnotations)$txScore, mcols(extendedAnnotationsExpected)$txScore) + expect_equal(mcols(extendedAnnotations)$txScore.noFit, mcols(extendedAnnotationsExpected)$txScore.noFit) + + unlink(test_path("fixtures", "*")) +}) From 5be3a63f5e0f20725452280e2a2d77b053d70958 Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 3 May 2023 13:28:33 +0800 Subject: [PATCH 026/189] Update documentation --- README.md | 85 ++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 69 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index ae13f235..8fd3468a 100755 --- a/README.md +++ b/README.md @@ -93,11 +93,17 @@ For information on the output and how to export it to a file see [Output](#Outpu #### **Transcript discovery only (no quantification)** If you are only interested in identifying novel transcripts, the quantification module of *bambu* can be skipped by setting quant to FALSE. -Note that the output will be a GRangeslist object containing the reference and novel annotations (See rowRanges() in [Output](#Output)). We recommend running transcript discovery only mode with NDR = 1, and doing filtering in the downstream analysis to allow flexibility in the analysis. See [Modulating the sensitivity of discovery (pre and post analysis)](#Modulating-the-sensitivity-of-discovery-pre-and-post-analysis) +Note that the output will be a GRangeslist object containing the reference and novel annotations (See rowRanges() in [Output](#Output)). For more details on how to adjust the sensitivity and precision of the results see [Modulating the sensitivity of discovery (pre and post analysis)](#Modulating-the-sensitivity-of-discovery-pre-and-post-analysis) ```rscript se.discoveryOnly <- bambu(reads = test.bam, annotations = gtf.file, genome = fa.file, quant = FALSE) ``` +Transcripts that were above the NDR threshold and filtered out (low confidence transcripts) and subset transcripts can be accessed in the metadata of the GRangesList object. + +```rscript +metadata(se.discoveryOnly)$lowConfidenceTranscripts +metadata(se.discoveryOnly)$subsetTranscripts +``` **Quantification of annotated transcripts and genes only (no transcript/gene discovery)** @@ -152,13 +158,30 @@ To manually select an NDR value, use the NDR argument in *bambu*: ```rscript se.NDR_0.3 <- bambu(reads = test.bam, annotations = annotations, genome = fa.file, NDR = 0.3) ``` -Alternatively transcript discovery can be run without thresholds, producing a GRangesList annotation object with all transcripts scored with its NDR score. Note that this means turning quant = FALSE in running *bambu* (refer to [“Transcript discovery only”](#transcript-discovery-only-no-quantification) section). The annotations can be filtered by their NDR score (see example below), read count and gene read proportion between the discovery and quantification steps or used for other types of analysis. +Alternatively the NDR threshold can be adjuted after discovery or on the final output (note that this will only effect the gtf output and for quantification to reflect the adddition or removal of transcripts because of the updated NDR, quantification would need to be rerun). the setNDR function will adjust the novel transcripts included in the output by removing any which are above the new threshold and adding those which are now below the threshold. setNDR takes the annotations as its first argument and the new NDR as the second argument. These annotations must have been generated by Bambu and have stored NDR values for this to work. Additionally setNDR can be run with no NDR, if you would prefer Bambu to recommend a threshold for your dataset. Refer to [“Transcript discovery only”](#transcript-discovery-only-no-quantification) for advanced details using setNDR + +```rscript +# after the discovery step +extendedAnnotations_0.3 = setNDR(se.discoveryOnly, 0.3) +writeToGTF(extendedAnnotations, "./output.gtf") + +# after a complete run +extendedAnnotations_0.3 = setNDR(rowRanges(se), 0.3) +writeToGTF(extendedAnnotations, "./output.gtf") +``` + +To run quantification at a different NDR, simply provide bambu annotations alongside the new NDR threshold to bambu and it will automatically adjust the transcripts. + +```rscript +se.quantOnly <- bambu(reads = test.bam, annotations = extendedAnnotatons genome = fa.file, discovery = FALSE, NDR = 0.5) +``` + +You can check the NDR threshold of your annotations by looking at the stored NDR value. This value is updated upon running setNDR. annotations imported from a gtf file will not have this value until after the first running of setNDR. ```rscript -newAnnotations <- bambu(reads = test.bam, annotations = annotations, genome = fa.file, NDR = 1, quant = FALSE) -annotations.filtered <- newAnnotations[(!is.na(mcols(newAnnotations)$NDR) & mcols(newAnnotations)$NDR<0.1) | is.na(mcols(newAnnotations)$NDR)] -se.NDR_1 <- bambu(reads = test.bam, annotations = annotations.filtered, genome = fa.file, NDR = 1, discovery = FALSE) +print(metadata(extendedAnnotations_0.3)$NDRthreshold) ``` + Additionally there are other thresholds that advanced users can access through opt.discovery when running *bambu* (see arguments). ### Output @@ -167,6 +190,7 @@ Additionally there are other thresholds that advanced users can access through o - **assays(se)** returns a list of transcript abundance estimates as counts or CPM - **rowRanges(se)** returns a GRangesList with all annotated and newly discovered transcripts - **rowData(se)** returns additional information about each transcript +- **metadata(rowRanges(se))** returns a list of transcripts considered low confidience which were not included in the exnteded Annotations. Access transcript expression estimates by extracting a variable (such as counts or CPM) using assays(): @@ -282,7 +306,7 @@ We have found the pretrained model works successfully across species borders (on ### De-novo transcript discovery In cases where the organism does not yet have reference annotations, or unreliable annotations, *bambu* can be run in de-novo mode. In de-novo mode, *bambu* does not train a model, and instead uses the pretrained model to classify novel transcripts (see [Using a pretrained model](#Using-a-pretrained-model). To learn how to train a new model for a more closely related organism/sample see [Training a model on another species/dataset and applying it](#Training-a-model-on-another-speciesdataset-and-applying-it). Without annotations *bambu* is unable to calibrate the NDR output, nor be able to recommend a threshold and will instead use the TPS as the thresholded value. Therefore you should supply a manual NDR threshold ([Modulating the sensitivity of discovery (pre and post analysis)](#Modulating-the-sensitivity-of-discovery-pre-and-post-analysis)) and note that the precision of the output is unlikely to linearly match an applied threshold. -The TPS threshold used is (> 1-NDR). If an NDR is not provided, a default NDR threshold of <0.1 is used (an effective TPS threshold of > 0.9). As in [Modulating the sensitivity of discovery (pre and post analysis)](#Modulating-the-sensitivity-of-discovery-pre-and-post-analysis) an NDR of 1 can be provided to output all possible read classes with their TPS scores +The TPS threshold used is (> 1-NDR). If an NDR is not provided, a default NDR threshold of <0.1 is used (an effective TPS threshold of > 0.9). ```rscript novelAnnotations <- bambu(reads = test.bam, annotations = NULL, genome = fa.file, NDR = 0.5, quant = FALSE) @@ -445,6 +469,16 @@ se <- bambu(reads = sample1.bam, annotations = annotations, genome = fa.file, op | verbose | A logical variable indicating whether processing messages will be printed. | | lowMemory | Reads will be processed by chromosomes instead of all together when lowMemory is specified. This option provides an efficient way to process big samples. | +### setNDR() arguments +|argument|description| +|---|---| +|extendedAnnotations| A GRangesList object produced from bambu(quant = FALSE) or rowRanges(se) or loaded in from prepareAnnotations() of a Bambu dervived .gtf | +|NDR| The maximum NDR for novel transcripts to be in extendedAnnotations (0-1). If not provided a recommended NDR is calculated. | +|includeRef| A boolean which if TRUE will also filter out reference annotations based on their NDR. Note that reference annotations with no NDR (because they were not detected) are not filtered and will remain potentially impacting quantificaiton. Use with caution. Defaults to FALSE. | +|prefix| A string which determines which transcript names are considered novel by bambu and will be filtered. Defaults to 'Bambu') | +|baselineFDR| a value between 0-1. Bambu uses this FDR on the trained model to recommend an equivilent NDR threshold to be used for the sample. By default, a baseline FDR of 0.1 is used. This does not impact the analysis if an NDR is set. Defaults to NULL| +|defaultModels| a bambu trained model object used to recommend an NDR threshold if no NDR is provided. Defaults to the pretrained model in the bambu package| + ### Output Description Access annotations that are matched to the transcript expression estimates by rowRanges() ```rscript @@ -480,25 +514,44 @@ rowData(se) |NDR|The NDR score calculated for the transcript| |relReadCount|The proportion of reads this transcript has relative to all reads assigned to its gene| |relSubsetCount|The proportion of reads this transcript has relative to all reads that either fully or partially match this transcript| +|maxTxScore|The maximum model score across samples from the sample-trained model. Used internally by Bambu to calculate NDR scores| +|maxTxScore.noFit|The maximum model score across samples from the pretrained model. Used internally by Bambu to recommend NDR thresholds| + +```rscript +metadata(se)$incompatibleCounts +metadata(se)$warnings +``` +IncompatibleCounts - A table containing counts for incompatible reads that can be assigned to a gene but to none of the provided transcripts. +warnings - A list containing the warnings produced by each sample + +```rscript +metadata(rowRanges(se))$NDRthreshold +metadata(rowRanges(se))$subsetTranscripts +metadata(rowRanges(se))$lowConfidenceTranscripts +metadata(rowRanges(se))$warnings +``` +NDRthreshold - The NDR threshold currently appled to the novel transcripts. A number between 0 and 1 +subsetTranscripts - A GrangesList containing subset transcripts when remove.subsetTx = TRUE. readCount and txScore can be accessed from mcols. +lowConfidenceTranscripts - A GrangesList containing novel transcripts above the NDR threshold +warnings - A list containing the warnings produced by each sample - ### Release History **bambu version 3.0.0** Release date: 2022-10-25 Major changes: - * Updated the input parameters of Bambu to simplify the user experience - * Introduced NDR threshold recommendation - * Implemented trainBambu(), allowing users to train and use models on their own data - * Reads that cannot be assigned to any transcript are grouped as incompatible counts - * Partial estimates are removed from output as it can be directly obtained based on total count estimates and full-length count estimates - * The fusion mode is now available, which assigns read classes that align to multiple genes to a new combined fusion gene +- Updated the input parameters of Bambu to simplify the user experience +- Introduced NDR threshold recommendation +- Implemented trainBambu(), allowing users to train and use models on their own data +- Reads that cannot be assigned to any transcript are grouped as incompatible counts +- Partial estimates are removed from output as it can be directly obtained based on total count estimates and full-length count estimates +- The fusion mode is now available, which assigns read classes that align to multiple genes to a new combined fusion gene Minor changes: - * Novel transcripts and genes are now by default output with a Bambu prefix - * Updated the documentation, messages and errors output by Bambu - * Annotated transcripts (with unique exon-junctions) with at least 1 full-length read are assigned a NDR rank +- Novel transcripts and genes are now by default output with a Bambu prefix +- Updated the documentation, messages and errors output by Bambu +- Annotated transcripts (with unique exon-junctions) with at least 1 full-length read are assigned a NDR rank **bambu version 1.99.0** From 108e8b914d5f63aff9ad0f889cec46a435a5b094 Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 3 May 2023 13:41:01 +0800 Subject: [PATCH 027/189] fix setNDR test --- R/bambu-extendAnnotations-utilityExtend.R | 2 +- tests/testthat/test_setNDR.R | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index f90a1b90..a31854a3 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -848,7 +848,7 @@ setNDR = function(extendedAnnotations, NDR = NULL, includeRef = FALSE, prefix = extendedAnnotations = c(extendedAnnotations[!toRemove], metadata(extendedAnnotations)$lowConfidenceTranscripts[toAdd]) metadata(extendedAnnotations)$lowConfidenceTranscripts = temp - metadata(extendedAnnotations)$NDR = NDR + metadata(extendedAnnotations)$NDRthreshold = NDR return(extendedAnnotations) } \ No newline at end of file diff --git a/tests/testthat/test_setNDR.R b/tests/testthat/test_setNDR.R index 7d4bca53..1c59b7d1 100644 --- a/tests/testthat/test_setNDR.R +++ b/tests/testthat/test_setNDR.R @@ -60,9 +60,9 @@ test_that("setNDR only effects transcripts with the prefix", { test_that("setNDR saves the used NDR threshold correctly", { extendedAnnotationsExpected <- readRDS(system.file("extdata", "extendedAnnotationGranges_txdbGrch38_91_chr9_1_1000000.rds",package = "bambu")) - metadata(extendedAnnotationsExpected)$NDR = 0.7 + #metadata(extendedAnnotationsExpected)$NDR = 0.7 extendedAnnotationsExpected_1 = setNDR(extendedAnnotationsExpected, 1) - metadata(extendedAnnotationsExpected_1)$NDR = 1 + expect_equal(metadata(extendedAnnotationsExpected_1)$NDRthreshold,1) }) test_that("setNDR works when no lowConfidenceTranscripts are present", { From f061a8e4e07c5fc2fa47e57961d01d3da5189be6 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 9 May 2023 10:18:42 +0800 Subject: [PATCH 028/189] Bambu now outputs 3 gtf files by default --- R/readWrite.R | 22 ++++++++++++++++++++-- R/transcriptToGeneExpression.R | 12 ++++++------ 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/R/readWrite.R b/R/readWrite.R index 4f6087d2..f7cfaec0 100644 --- a/R/readWrite.R +++ b/R/readWrite.R @@ -28,7 +28,7 @@ writeBambuOutput <- function(se, path, prefix = "") { transcript_grList <- rowRanges(se) transcript_gtffn <- paste(outdir, prefix, "extended_annotations.gtf", sep = "") - gtf <- writeToGTF(annotation = transcript_grList, + gtf <- writeAnnotatonsToGTF(annotation = transcript_grList, file = transcript_gtffn) for(d in names(assays(se))){ @@ -98,7 +98,7 @@ writeToGTF <- function(annotation, file, geneIDs = NULL) { txScore.noFit = rep(mcols(annotation)$maxTxScore.noFit, unname(elementNROWS(annotation))) df$txScore.noFit <- paste('maxTxScore.noFit "', as.character(txScore.noFit), '";', sep = "") } - if (missing(geneIDs)) { + if (is.null(geneIDs)) { if (!is.null(mcols(annotation, use.names = FALSE)$GENEID)) { geneIDs <- as_tibble(mcols(annotation, use.names = FALSE)[, c("TXNAME", "GENEID")]) @@ -139,6 +139,24 @@ writeToGTF <- function(annotation, file, geneIDs = NULL) { col.names = FALSE, sep = "\t") } +writeAnnotatonsToGTF <- function(annotation, file, geneIDs = NULL, outputExtendedAnno = TRUE, outputAll = TRUE, outputBambuModels = TRUE){ + if(outputExtendedAnno){ + writeToGTF(annotation, paste0(file, "_extendedAnnotations"), geneIDs) + } + if(outputAll){ + annotationAll = setNDR(annotation, 1) + if(length(annotationAll) == length(annotation)) + message("The current NDR threshold already outputs all transcript models. This may result in reduced precision for th extendedAnnotations and supportedTranscriptModels gtfs") + writeToGTF(annotationAll, paste0(file, "_allTranscriptModels"), geneIDs) + } + #todo - have this write bambu start and ends for annotated transcripts + if(outputBambuModels){ + annotationBambu = annotation[!is.na(mcols(annotation)$readCount)] + writeToGTF(annotationBambu, paste0(file, "_supportedTranscriptModels"), geneIDs) + + } +} + #' Outputs GRangesList object from reading a GTF file #' @title convert a GTF file into a GRangesList diff --git a/R/transcriptToGeneExpression.R b/R/transcriptToGeneExpression.R index 9cf7604b..e91efca5 100644 --- a/R/transcriptToGeneExpression.R +++ b/R/transcriptToGeneExpression.R @@ -20,12 +20,12 @@ transcriptToGeneExpression <- function(se) { rowDataSe <- as.data.table(rowData(se)) counts <- rowDataSe[, .(TXNAME, GENEID)][counts, on = "TXNAME"] - incompatibleCounts <- metadata(se)$incompatibleCounts - incompatibleCounts[, TXNAME := "incompatible"] - counts_incompatible <- melt(incompatibleCounts, id.vars = c("GENEID","TXNAME"), - measure.vars = setdiff(colnames(incompatibleCounts), c("GENEID","TXNAME"))) - # GENEID, TXNAME, variable, value - counts <- rbind(counts, counts_incompatible[variable %in% unique(counts$variable)]) + # incompatibleCounts <- metadata(se)$incompatibleCounts + # incompatibleCounts[, TXNAME := "incompatible"] + # counts_incompatible <- melt(incompatibleCounts, id.vars = c("GENEID","TXNAME"), + # measure.vars = setdiff(colnames(incompatibleCounts), c("GENEID","TXNAME"))) + # # GENEID, TXNAME, variable, value + # counts <- rbind(counts, counts_incompatible[variable %in% unique(counts$variable)]) counts[, valueGene := sum(value), by = list(variable, GENEID)] counts[, valueGeneCPM := valueGene / max(sum(value), 1) * 10^6, by = list(variable)] From 601301ab0b244ec89d1456c95294d36af43d3abb Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 9 May 2023 10:22:07 +0800 Subject: [PATCH 029/189] 4th GTF of novel transcripts only --- R/readWrite.R | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/R/readWrite.R b/R/readWrite.R index f7cfaec0..1ce54297 100644 --- a/R/readWrite.R +++ b/R/readWrite.R @@ -139,7 +139,8 @@ writeToGTF <- function(annotation, file, geneIDs = NULL) { col.names = FALSE, sep = "\t") } -writeAnnotatonsToGTF <- function(annotation, file, geneIDs = NULL, outputExtendedAnno = TRUE, outputAll = TRUE, outputBambuModels = TRUE){ +writeAnnotatonsToGTF <- function(annotation, file, geneIDs = NULL, outputExtendedAnno = TRUE, + outputAll = TRUE, outputBambuModels = TRUE, outputNovelOnly = TRUE){ if(outputExtendedAnno){ writeToGTF(annotation, paste0(file, "_extendedAnnotations"), geneIDs) } @@ -149,11 +150,16 @@ writeAnnotatonsToGTF <- function(annotation, file, geneIDs = NULL, outputExtende message("The current NDR threshold already outputs all transcript models. This may result in reduced precision for th extendedAnnotations and supportedTranscriptModels gtfs") writeToGTF(annotationAll, paste0(file, "_allTranscriptModels"), geneIDs) } + #todo - have this write bambu start and ends for annotated transcripts if(outputBambuModels){ annotationBambu = annotation[!is.na(mcols(annotation)$readCount)] writeToGTF(annotationBambu, paste0(file, "_supportedTranscriptModels"), geneIDs) + } + if(outputNovelOnly){ + annotationNovel = annotation[mcols(annotation)novelTranscript] + writeToGTF(annotationBambu, paste0(file, "_novelTranscripts"), geneIDs) } } From 49340ba6b17c0f43aca3e19b84cc3fddb372d3c8 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 9 May 2023 11:18:08 +0800 Subject: [PATCH 030/189] Include options to ignore GTF outputs --- R/readWrite.R | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/R/readWrite.R b/R/readWrite.R index 1ce54297..bb606ae7 100644 --- a/R/readWrite.R +++ b/R/readWrite.R @@ -16,7 +16,8 @@ #' )) #' path <- tempdir() #' writeBambuOutput(se, path) -writeBambuOutput <- function(se, path, prefix = "") { +writeBambuOutput <- function(se, path, prefix = "", outputExtendedAnno = TRUE, + outputAll = TRUE, outputBambuModels = TRUE, outputNovelOnly = TRUE) { if (missing(se) | missing(path)) { stop("Both summarizedExperiment object from bambu and the path for the output files are required.") @@ -29,7 +30,8 @@ writeBambuOutput <- function(se, path, prefix = "") { transcript_gtffn <- paste(outdir, prefix, "extended_annotations.gtf", sep = "") gtf <- writeAnnotatonsToGTF(annotation = transcript_grList, - file = transcript_gtffn) + file = transcript_gtffn, outputExtendedAnno = TRUE, + outputAll = TRUE, outputBambuModels = TRUE, outputNovelOnly = TRUE) for(d in names(assays(se))){ writeCountsOutput(se, varname=d, @@ -139,6 +141,28 @@ writeToGTF <- function(annotation, file, geneIDs = NULL) { col.names = FALSE, sep = "\t") } +#' Write annotation GRangesList into multiple filtered GTF files +#' @title write GRangeslist into multiple filtered GTF files +#' @param annotation a \code{GRangesList} object +#' @param file the output gtf file name +#' @param geneIDs an optional dataframe of geneIDs (column 2) with +#' the corresponding transcriptIDs (column 1) +#' @param outputExtendedAnno an optional boolean to write the extended annotations as a GTF +#' @param outputAll an optional boolean to write all transcripts (irrespective of confidence) as a GTF +#' @param outputBambuModels an optional boolean to write only full-length read supported models as a GTF +#' @param outputNovelOnly an optional boolean to write only novel high confidence transcripts as a GTF +#' @return gtf a GTF dataframe +#' @importFrom dplyr select as_tibble mutate %>% left_join arrange group_by +#' ungroup recode_factor +#' @importFrom methods is +#' @export +#' @examples +#' outputGtfFile <- tempfile() +#' gr <- readRDS(system.file("extdata", +#' "annotationGranges_txdbGrch38_91_chr9_1_1000000.rds", +#' package = "bambu" +#' )) +#' writeToGTF(gr, outputGtfFile) writeAnnotatonsToGTF <- function(annotation, file, geneIDs = NULL, outputExtendedAnno = TRUE, outputAll = TRUE, outputBambuModels = TRUE, outputNovelOnly = TRUE){ if(outputExtendedAnno){ From 392383751d3f632d2a57ac68f5f5a2ad25196e37 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 9 May 2023 11:18:24 +0800 Subject: [PATCH 031/189] Update documentation with writeAnnotationsToGTF --- NAMESPACE | 1 + README.md | 36 ++++++++++++++++-------------------- 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index c360bde7..b908b9de 100755 --- a/NAMESPACE +++ b/NAMESPACE @@ -7,6 +7,7 @@ export(readFromGTF) export(transcriptToGeneExpression) export(writeBambuOutput) export(writeToGTF) +export(writeAnnotationsToGTF) export(trainBambu) export(setNDR) export(compareTranscripts) diff --git a/README.md b/README.md index 8fd3468a..b79f0fdd 100755 --- a/README.md +++ b/README.md @@ -164,11 +164,11 @@ Alternatively the NDR threshold can be adjuted after discovery or on the final o ```rscript # after the discovery step extendedAnnotations_0.3 = setNDR(se.discoveryOnly, 0.3) -writeToGTF(extendedAnnotations, "./output.gtf") +writeAnnotationsToGTF(extendedAnnotations, "./output.gtf") # after a complete run extendedAnnotations_0.3 = setNDR(rowRanges(se), 0.3) -writeToGTF(extendedAnnotations, "./output.gtf") +writeAnnotationsToGTF(extendedAnnotations, "./output.gtf") ``` To run quantification at a different NDR, simply provide bambu annotations alongside the new NDR threshold to bambu and it will automatically adjust the transcripts. @@ -202,41 +202,37 @@ Access transcript expression estimates by extracting a variable (such as counts For a full description of the other outputs see [Output Description](#Output-Description) -The full output can be written to a file using writeBambuOutput(). Using this function will generate three files, including a .gtf file for the extended annotations, and two .txt files for the expression counts at transcript and gene levels. +The full output can be written to a file using writeBambuOutput(). Using this function will generate six files, including 4four .gtf files(detailed below), and two .txt files for the expression counts at transcript and gene levels. + +By default bambu will write four .gtf files +- **extendedAnnotations.gtf** - Contains all transcript models from the reference annotations and any novel high confidence transcript models (below NDR threshold) from Bambu +- **allTranscriptModels** - Contains all transcript models from the reference annotations and all novel transcript models, irrespective of their NDR score. This is useful for reloading into Bambu with prepareAnnotations() to redo the analysis or reoutput the annotations at different NDR thresholds. +- **supportedTranscriptModels** - Contains only transcript models that are fully supported by at least one read across the samples provided. Note that if multiple reference annotations share the same intron junctions, an abitrary one will selected to be be included in this output. +- **novelTranscripts** - Contains only novel high confidence transcript models (below NDR threshold) from Bambu. + ```rscript writeBambuOutput(se, path = "./bambu/") ``` -If you are only interested in the novel transcripts, one can filter this 'se' object first to remove reference annotations. -```rscript -se.novel = se[mcols(se)$novelTranscript,] -writeBambuOutput(se.novel, path = "./bambu/") -``` -If you are only interested in full-length transcripts that were detected by Bambu. +If you would like to avoid outputting any of the above .gtf for space concerns, each can be toggled off with the below arguments. ```rscript -se.novel = se[assays(se)$fullLengthCounts >= 1,] -writeBambuOutput(se.novel, path = "./bambu/") +writeBambuOutput(se.novel, path = "./bambu/", outputExtendedAnno = FALSE, outputAll = FALSE, outputBambuModels = FALSE, outputNovelOnly = FALSE) ``` If quant is set to FALSE i.e. only transcript discovery is performed, only the rowRanges output of the extended annotations is returned (a GRangesList object). The equivalent rowData can be accessed with mcols() -These annotations can be written to a .gtf file using writeToGTF(GRangesList_object, output_path). +These annotations can be written to a .gtf file using writeAnnotatonsToGTF(GRangesList_object, output_path). +This will output the four .gtf files mentioned above, and can be excluded using the same arguments. ```rscript se.discoveryOnly <- bambu(reads = sample, annotations = annotations, genome = fa.file, quant = FALSE) -writeToGTF(se.discoveryOnly, "./output.gtf") +writeAnnotatonsToGTF(se.discoveryOnly, "./output.gtf") ``` -As above, to output only the novel annotations, you need to filter out the reference annotations. +If you would prefer to manually filter the annotations, you can also provide the resulting annotations to writeToGTF() which will output the annotations as is. ```rscript se.discoveryOnly.novel = se.discoveryOnly[mcols(se.discoveryOnly)$novelTranscript,] writeToGTF(se.discoveryOnly.novel, "./output.gtf") ``` -If you are only interested in full-length transcripts that were detected by Bambu. If multiple transcripts share exon-junctions, only one will be displayed. To avoid this, do the filter after quantification as in the example above. -```rscript -se.novel = se[!is.na(mcols(se)$readCount) & mcols(se)$readCount >= 1,] -writeBambuOutput(se.novel, path = "./bambu/") -``` If both quant and discovery are set to FALSE, *bambu* will return an intermediate object see [Storing and using preprocessed files (rcFiles)](#Storing-and-using-preprocessed-files-rcFiles) - ### Visualization You can visualize the novel genes/transcripts using plotBambu function. (Note that the visualization was done by running *bambu* on the three replicates of HepG2 cell line in the SG-NEx project) From 584c81185bd5ee7f6d6969be40516c134d43511d Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 13 Jun 2023 16:54:46 +0800 Subject: [PATCH 032/189] Fix typo --- R/bambu_utilityFunctions.R | 2 +- R/readWrite.R | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index be588acf..c04f4781 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -187,10 +187,10 @@ handleWarnings <- function(readClassList, verbose){ if (is.character(readClassSe)) readClassSe <- readRDS(file = readClassSe) warnings[[i]] = metadata(readClassSe)$warnings + if(is.null(metadata(readClassSe)$warnings)) warnings[[i]] = NA sampleNames = c(sampleNames, colnames(readClassList[[i]])) } names(warnings) = sampleNames - if(verbose & any(lengths(warnings)>0)){ message("--- per sample warnings during read class construction ---") for(i in seq_along(warnings)){ diff --git a/R/readWrite.R b/R/readWrite.R index bb606ae7..227adeca 100644 --- a/R/readWrite.R +++ b/R/readWrite.R @@ -163,7 +163,7 @@ writeToGTF <- function(annotation, file, geneIDs = NULL) { #' package = "bambu" #' )) #' writeToGTF(gr, outputGtfFile) -writeAnnotatonsToGTF <- function(annotation, file, geneIDs = NULL, outputExtendedAnno = TRUE, +writeAnnotationsToGTF <- function(annotation, file, geneIDs = NULL, outputExtendedAnno = TRUE, outputAll = TRUE, outputBambuModels = TRUE, outputNovelOnly = TRUE){ if(outputExtendedAnno){ writeToGTF(annotation, paste0(file, "_extendedAnnotations"), geneIDs) @@ -182,7 +182,7 @@ writeAnnotatonsToGTF <- function(annotation, file, geneIDs = NULL, outputExtende } if(outputNovelOnly){ - annotationNovel = annotation[mcols(annotation)novelTranscript] + annotationNovel = annotation[mcols(annotation)$novelTranscript] writeToGTF(annotationBambu, paste0(file, "_novelTranscripts"), geneIDs) } } From 3466f7f2b58f377f6523d07281fdf35ba2bb4205 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 26 Jun 2023 15:26:36 +0800 Subject: [PATCH 033/189] Fix typo --- R/readWrite.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/readWrite.R b/R/readWrite.R index 227adeca..f7c4fc9c 100644 --- a/R/readWrite.R +++ b/R/readWrite.R @@ -29,7 +29,7 @@ writeBambuOutput <- function(se, path, prefix = "", outputExtendedAnno = TRUE, transcript_grList <- rowRanges(se) transcript_gtffn <- paste(outdir, prefix, "extended_annotations.gtf", sep = "") - gtf <- writeAnnotatonsToGTF(annotation = transcript_grList, + gtf <- writeAnnotationsToGTF(annotation = transcript_grList, file = transcript_gtffn, outputExtendedAnno = TRUE, outputAll = TRUE, outputBambuModels = TRUE, outputNovelOnly = TRUE) From 754e5edde5496a5738eb749ac5d71e6c467d0198 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 26 Jun 2023 16:03:14 +0800 Subject: [PATCH 034/189] Fix typo --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b79f0fdd..2cc17cab 100755 --- a/README.md +++ b/README.md @@ -219,11 +219,11 @@ writeBambuOutput(se.novel, path = "./bambu/", outputExtendedAnno = FALSE, output ``` If quant is set to FALSE i.e. only transcript discovery is performed, only the rowRanges output of the extended annotations is returned (a GRangesList object). The equivalent rowData can be accessed with mcols() -These annotations can be written to a .gtf file using writeAnnotatonsToGTF(GRangesList_object, output_path). +These annotations can be written to a .gtf file using writeAnnotationsToGTF(GRangesList_object, output_path). This will output the four .gtf files mentioned above, and can be excluded using the same arguments. ```rscript se.discoveryOnly <- bambu(reads = sample, annotations = annotations, genome = fa.file, quant = FALSE) -writeAnnotatonsToGTF(se.discoveryOnly, "./output.gtf") +writeAnnotationsToGTF(se.discoveryOnly, "./output.gtf") ``` If you would prefer to manually filter the annotations, you can also provide the resulting annotations to writeToGTF() which will output the annotations as is. ```rscript From 897d7355e64b37b77ffc3acda49beefbff2a40c8 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 26 Jun 2023 16:03:24 +0800 Subject: [PATCH 035/189] Fix bug when rcOutDir not used --- R/bambu_utilityFunctions.R | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index c04f4781..9e3cca67 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -184,11 +184,11 @@ handleWarnings <- function(readClassList, verbose){ sampleNames = c() for(i in seq_along(readClassList)){ readClassSe = readClassList[[i]] - if (is.character(readClassSe)) - readClassSe <- readRDS(file = readClassSe) + if (is.character(readClassSe)) { + readClassSe <- readRDS(file = readClassSe)} warnings[[i]] = metadata(readClassSe)$warnings - if(is.null(metadata(readClassSe)$warnings)) warnings[[i]] = NA - sampleNames = c(sampleNames, colnames(readClassList[[i]])) + if(is.null(metadata(readClassSe)$warnings)) {warnings[[i]] = NA} + sampleNames = c(sampleNames, colnames(readClassSe)) } names(warnings) = sampleNames if(verbose & any(lengths(warnings)>0)){ From 3645daefc7dbc82e40028f78d7bf40b7139f044b Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 26 Jun 2023 16:25:26 +0800 Subject: [PATCH 036/189] Improve default outs to include counts of rcs and txs --- R/bambu-extendAnnotations-utilityExtend.R | 3 +++ R/bambu-processReads_scoreReadClasses.R | 2 ++ R/bambu.R | 1 + 3 files changed, 6 insertions(+) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index a31854a3..d5bed4a9 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -43,6 +43,9 @@ isore.extendAnnotations <- function(combinedTranscripts, annotationGrangesList, extendedAnnotationRanges <- filterTranscriptsByAnnotation( rowDataCombined, annotationGrangesList, exonRangesCombined, prefix, remove.subsetTx, min.readFractionByEqClass, baselineFDR, NDR, defaultModels, verbose) + message(paste0("Novel transcripts detected: ", sum(mcols(extendedAnnotationRanges)$novelTranscript))) + message(paste0("Novel genes detected: ", length(unique(mcols(se)$GENEID[mcols(se)$novelGene])))) + message(paste0("Low confidence transcripts excluded: ", length(metadata(extendedAnnotationRanges)$lowConfidenceTranscripts))) return(extendedAnnotationRanges) } else { message("The current filtering criteria filters out all new read diff --git a/R/bambu-processReads_scoreReadClasses.R b/R/bambu-processReads_scoreReadClasses.R index 7a3ab276..1c328cf4 100644 --- a/R/bambu-processReads_scoreReadClasses.R +++ b/R/bambu-processReads_scoreReadClasses.R @@ -7,6 +7,7 @@ scoreReadClasses = function(se, genomeSequence, annotations, defaultModels, fit = TRUE, returnModel = FALSE, min.readCount = 2, min.exonOverlap = 10, fusionMode = FALSE, verbose = FALSE){ + message(paste0("Number of Read Classes - ", nrow(se))) start.ptm <- proc.time() options(scipen = 999) #maintain numeric basepair locations not sci.notfi. geneIds = assignGeneIds(rowRanges(se), annotations, min.exonOverlap, fusionMode) @@ -196,6 +197,7 @@ getTranscriptScore = function(rowData, model = NULL, defaultModels){ #' @return It returns a model object to use in \link{bambu} #' @export trainBambu <- function(rcFile = NULL, min.readCount = 2, nrounds = 50, NDR.threshold = 0.1, verbose = TRUE) { + if(verbose) message(paste0("Read Classes used for training", nrow(rowData))) rowData = rowData(rcFile)[which(rowData(rcFile)$readCount>=min.readCount),] txFeatures = prepareTranscriptModelFeatures(rowData) features = dplyr::select(txFeatures,!c(labels)) diff --git a/R/bambu.R b/R/bambu.R index c7c06206..b7bec995 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -140,6 +140,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, quant = TRUE, stranded = FALSE, ncore = 1, yieldSize = NULL, trackReads = FALSE, returnDistTable = FALSE, lowMemory = FALSE, fusionMode = FALSE, verbose = FALSE) { + message(paste0("Running Bambu-v", "3.2.4")) if(is.null(annotations)) { annotations = GRangesList() } else annotations <- checkInputs(annotations, reads, readClass.outputDir = rcOutDir, genomeSequence = genome) From 0dfda6d0bb16b5b55d23653b74a0e95d0835e0d2 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 10 Jul 2023 11:44:37 +0800 Subject: [PATCH 037/189] Ensure eqClasses is recalculated when setting NDR --- R/bambu-extendAnnotations-utilityExtend.R | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index d5bed4a9..2821392c 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -850,6 +850,10 @@ setNDR = function(extendedAnnotations, NDR = NULL, includeRef = FALSE, prefix = temp = c(metadata(extendedAnnotations)$lowConfidenceTranscripts[!toAdd], extendedAnnotations[toRemove]) extendedAnnotations = c(extendedAnnotations[!toRemove], metadata(extendedAnnotations)$lowConfidenceTranscripts[toAdd]) metadata(extendedAnnotations)$lowConfidenceTranscripts = temp + + mcols(extendedAnnotations)$txid <- seq_along(extendedAnnotations) + minEqClasses <- getMinimumEqClassByTx(extendedAnnotations) + mcols(extendedAnnotations)$eqClassById <- minEqClasses$eqClassById metadata(extendedAnnotations)$NDRthreshold = NDR From d062a5b0627b12c081ddbf2ffefbfa6737c7e17f Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 26 Sep 2023 15:50:42 +0800 Subject: [PATCH 038/189] Use one read class file for multiple samples --- R/bambu-extendAnnotations-utilityExtend.R | 9 +- R/bambu-processReads.R | 95 +++++++++++++++---- ...processReads_utilityConstructReadClasses.R | 25 +++-- R/bambu-quantify.R | 32 ++----- R/bambu.R | 31 +++++- 5 files changed, 134 insertions(+), 58 deletions(-) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index 01310fa9..b675f2c4 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -686,10 +686,11 @@ isore.estimateDistanceToAnnotations <- function(seReadClass, primarySecondaryDistStartEnd = min.primarySecondaryDistStartEnd, ignore.strand = FALSE) distTable$readCount <- assays(seReadClass)$counts[distTable$readClassId, ] - if (additionalFiltering) - distTable <- left_join(distTable, select(readClassTable, - readClassId, confidenceType), by = "readClassId") %>% - mutate(relativeReadCount = readCount / txNumberFiltered) +# if (additionalFiltering) +# distTable <- left_join(distTable, select(readClassTable, +# readClassId, confidenceType), by = "readClassId") %>% +# mutate(relativeReadCount = readCount / txNumberFiltered) + distTable <- dplyr::select(distTable, annotationTxId, txid, readClassId, readCount, compatible, equal,dist) distTable <- left_join(distTable, as_tibble(mcols(annotationGrangesList)[, c("txid", "GENEID")]), diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 31246d35..b6b4dda7 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -44,15 +44,58 @@ bambu.processReads <- function(reads, annotations, genomeSequence, defaultModels = isoreParameters[["defaultModels"]] returnModel = isoreParameters[["returnModel"]] min.exonOverlap = isoreParameters[["min.exonOverlap"]] - readClassList <- bplapply(names(reads), function(bamFileName) { - bambu.processReadsByFile(bam.file = reads[bamFileName], + + readGrgList <- bplapply(seq_along(reads), function(i) { + bambu.processReadsByFile(bam.file = reads[names(reads)[i]], genomeSequence = genomeSequence,annotations = annotations, readClass.outputDir = readClass.outputDir, stranded = stranded, min.readCount = min.readCount, fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, - lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode)}, + lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode, index = i)}, BPPARAM = bpParameters) + readGrgList = do.call(c, readGrgList) + mcols(readGrgList)$id <- seq_along(readGrgList) + + readClassList <- constructReadClasses(readGrgList, genomeSequence = genomeSequence,annotations = annotations, + readClass.outputDir = readClass.outputDir, + stranded = stranded, min.readCount = min.readCount, + fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, + defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, + lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode) + + metadata(readClassList)$samples = names(reads) + countMatrix = splitReadClassFiles(readClassList) + colnames(countMatrix) = metadata(readClassList)$samples + rownames(countMatrix) = rownames(readClassList) + metadata(readClassList)$countMatrix = countMatrix + + # TODO return output + # if (!is.null(readClass.outputDir)) { + # readClassFile <- paste0(readClass.outputDir,names(bam.file), + # "_readClassSe.rds") + # if (file.exists(readClassFile)) { + # show(paste(readClassFile, "exists, will be overwritten")) + # warning(readClassFile, "exists, will be overwritten") + # } else { + # readClassFile <- BiocFileCache::bfcnew(BiocFileCache::BiocFileCache( + # readClass.outputDir, ask = FALSE), + # paste0(names(bam.file),"_readClassSe"), ext = ".rds") + # } + # saveRDS(se, file = readClassFile) + # se <- readClassFile + # } + + + # readClassList <- bplapply(names(reads), function(bamFileName) { + # bambu.processReadsByFile(bam.file = reads[bamFileName], + # genomeSequence = genomeSequence,annotations = annotations, + # readClass.outputDir = readClass.outputDir, + # stranded = stranded, min.readCount = min.readCount, + # fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, + # defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, + # lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode)}, + # BPPARAM = bpParameters) return(readClassList) } @@ -63,7 +106,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, readClass.outputDir = NULL, stranded = FALSE, min.readCount = 2, fitReadClassModel = TRUE, min.exonOverlap = 10, defaultModels = NULL, returnModel = FALSE, - verbose = FALSE, lowMemory = FALSE, trackReads = FALSE, fusionMode = FALSE) { + verbose = FALSE, lowMemory = FALSE, trackReads = FALSE, fusionMode = FALSE, index = 0) { if(verbose) message(names(bam.file)[1]) readGrgList <- prepareDataFromBam(bam.file[[1]], verbose = verbose, use.names = trackReads) warnings = c() @@ -92,6 +135,7 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, # reassign Ids after seqlevels are dropped mcols(readGrgList)$id <- seq_along(readGrgList) } + mcols(readGrgList)$sampleID = index #removes reads that are outside genome coordinates badReads = which(max(end(ranges(readGrgList)))>= seqlengths(genomeSequence)[as.character(getChrFromGrList(readGrgList))]) @@ -106,6 +150,15 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, if(length(readGrgList) == 0) { stop("No reads left after filtering.") } + + return(readGrgList) +} + +constructReadClasses <- function(readGrgList, genomeSequence, annotations, + readClass.outputDir = NULL, stranded = FALSE, min.readCount = 2, + fitReadClassModel = TRUE, min.exonOverlap = 10, defaultModels = NULL, returnModel = FALSE, + verbose = FALSE, lowMemory = FALSE, trackReads = FALSE, fusionMode = FALSE){ + warnings = c() ###TODO # construct read classes for each chromosome seperately if(lowMemory) se <- lowMemoryConstructReadClasses(readGrgList, genomeSequence, annotations, stranded, verbose,bam.file) @@ -123,15 +176,17 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, annotations,genomeSequence, stranded = stranded, verbose = verbose) # create SE object with reconstructed readClasses se <- isore.constructReadClasses(readGrgList, unlisted_junctions, - uniqueJunctions, runName = names(bam.file)[1], + uniqueJunctions, runName = "TODO", annotations, stranded, verbose) } + metadata(se)$warnings = warnings if(trackReads){ metadata(se)$readNames = names(readGrgList) metadata(se)$readId = mcols(readGrgList)$id } rm(readGrgList) + refSeqLevels <- seqlevels(genomeSequence) GenomeInfoDb::seqlevels(se) <- refSeqLevels # create SE object with reconstructed readClasses se <- scoreReadClasses(se,genomeSequence, annotations, @@ -142,20 +197,6 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, min.exonOverlap = min.exonOverlap, fusionMode = fusionMode, verbose = verbose) - if (!is.null(readClass.outputDir)) { - readClassFile <- paste0(readClass.outputDir,names(bam.file), - "_readClassSe.rds") - if (file.exists(readClassFile)) { - show(paste(readClassFile, "exists, will be overwritten")) - warning(readClassFile, "exists, will be overwritten") - } else { - readClassFile <- BiocFileCache::bfcnew(BiocFileCache::BiocFileCache( - readClass.outputDir, ask = FALSE), - paste0(names(bam.file),"_readClassSe"), ext = ".rds") - } - saveRDS(se, file = readClassFile) - se <- readClassFile - } return(se) } @@ -194,4 +235,20 @@ seqlevelCheckReadsAnnotation <- function(reads, annotations){ "annotations might be incomplete. Please compare objects ", "on the same reference")) return(warnings) +} + +splitReadClassFiles = function(readClassFile){ + rowIndex = c() + sampleCount = c() + counts = c() + for(i in seq_along(metadata(readClassFile)$samples)){ + counts.sample = sapply(rowData(readClassFile)$sampleIDs, FUN = function(x){sum(x==i)}) + counts = c(counts, counts.sample[counts.sample != 0]) + rowIndex = c(rowIndex, which(counts.sample != 0)) + sampleCount = c(sampleCount, sum(counts.sample !=0)) + } + counts = sparseMatrix(i = rowIndex, + j = rep(seq_along(metadata(readClassFile)$samples), sampleCount), + x = counts) + return(counts) } \ No newline at end of file diff --git a/R/bambu-processReads_utilityConstructReadClasses.R b/R/bambu-processReads_utilityConstructReadClasses.R index 4858798b..0d3e0b07 100644 --- a/R/bambu-processReads_utilityConstructReadClasses.R +++ b/R/bambu-processReads_utilityConstructReadClasses.R @@ -16,6 +16,8 @@ isore.constructReadClasses <- function(readGrgList, unlisted_junctions, use.names = FALSE) mcols(reads.singleExon)$id <- mcols(readGrgList[ elementNROWS(readGrgList) == 1])$id + mcols(reads.singleExon)$sampleID <- mcols(readGrgList[ + elementNROWS(readGrgList) == 1])$sampleID #only keep multi exons reads in readGrgList readGrgList <- readGrgList[elementNROWS(readGrgList) > 1] if (!identical(mcols(readGrgList)$id,unique(mcols(unlisted_junctions)$id))) @@ -94,7 +96,7 @@ constructSplicedReadClasses <- function(uniqueJunctions, unlisted_junctions, readTable <- readTable %>% dplyr::select(chr.rc = chr, strand.rc = strand, startSD = startSD, endSD = endSD, readCount.posStrand = readCount.posStrand, intronStarts, intronEnds, - confidenceType, readCount, readIds) + confidenceType, readCount, readIds, sampleIDs) mcols(exonsByReadClass) <- readTable options(scipen = 0) return(exonsByReadClass) @@ -176,7 +178,8 @@ createReadTable <- function(unlisted_junctions_start, unlisted_junctions_end, end = pmax(end(readRanges), intronEndCoordinatesInt), strand = readStrand, confidenceType = readConfidence, alignmentStrand = as.character(getStrandFromGrList(readGrgList))=='+', - readId = mcols(readGrgList)$id) + readId = mcols(readGrgList)$id, + sampleID = mcols(readGrgList)$sampleID) rm(readRanges, readStrand, unlisted_junctions_start, unlisted_junctions_end, unlisted_junctions_id, readConfidence, intronStartCoordinatesInt, intronEndCoordinatesInt) @@ -186,7 +189,8 @@ createReadTable <- function(unlisted_junctions_start, unlisted_junctions_end, summarise(readCount = n(), startSD = sd(start), endSD = sd(end), start = nth(x = start, n = ceiling(readCount / 5), order_by = start), end = nth(x = end, n = ceiling(readCount / 1.25), order_by = end), - readCount.posStrand = sum(alignmentStrand, na.rm = TRUE), readIds = list(readId), + readCount.posStrand = sum(alignmentStrand, na.rm = TRUE), + readIds = list(readId), sampleIDs = list(sampleID), .groups = 'drop') %>% arrange(chr, start, end) %>% mutate(readClassId = paste("rc", row_number(), sep = ".")) @@ -244,13 +248,15 @@ constructUnsplicedReadClasses <- function(reads.singleExon, annotations, # by their minimum read class coordinates #remove duplicate ranges counts = as.data.frame(reads.singleExon) %>% - mutate(id = mcols(reads.singleExon)$id) %>% + mutate(id = mcols(reads.singleExon)$id, + sampleID = mcols(reads.singleExon)$sampleID) %>% group_by(seqnames,start,end,strand) %>% - summarise(n=n(), id = list(id)) %>% + summarise(n=n(), id = list(id), sampleID = list(sampleID)) %>% as.data.frame() reads.singleExon = unique(reads.singleExon) mcols(reads.singleExon)$counts <- counts$n mcols(reads.singleExon)$id <- counts$id + mcols(reads.singleExon)$sampleID <- counts$sampleID rcUnsplicedAnnotation <- getUnsplicedReadClassByReference( granges = reads.singleExon, grangesReference = referenceExons, @@ -309,17 +315,18 @@ getUnsplicedReadClassByReference <- function(granges, grangesReference, readStart = start(granges)[queryHits], readEnd = end(granges)[queryHits], counts = mcols(granges)$counts[queryHits], - readId = mcols(granges[queryHits])$id) + readId = mcols(granges[queryHits])$id, + sampleID = mcols(granges[queryHits])$sampleID) hitsDF <- hitsDF %>% dplyr::select(chr, start, end, readStart, readEnd, strand, readClassId, alignmentStrand, - counts, readId) %>% + counts, readId, sampleID) %>% group_by(readClassId) %>% summarise(start = start[1], end = end[1], strand = strand[1], chr = chr[1], readCount = sum(counts), startSD = sd(rep(readStart,counts)), endSD = sd(rep(readEnd,counts)), readCount.posStrand = sum(rep(alignmentStrand,counts)), - readIds = list(unlist(readId))) %>% + readIds = list(unlist(readId)), sampleIDs = list(unlist(sampleID))) %>% mutate(confidenceType = confidenceType, intronStarts = NA, intronEnds = NA) if(nrow(hitsDF)==0){ @@ -338,7 +345,7 @@ getUnsplicedReadClassByReference <- function(granges, grangesReference, hitsDF <- dplyr::select(hitsDF, chr.rc = chr, strand.rc = strand, intronStarts, intronEnds, confidenceType, readCount, startSD, endSD, - readCount.posStrand, readIds) + readCount.posStrand, readIds, sampleIDs) mcols(exByReadClassUnspliced) <- hitsDF return(exByReadClassUnspliced) } diff --git a/R/bambu-quantify.R b/R/bambu-quantify.R index fa5a079d..3b10eabf 100644 --- a/R/bambu-quantify.R +++ b/R/bambu-quantify.R @@ -2,31 +2,22 @@ #' @inheritParams bambu #' @import data.table #' @noRd -bambu.quantify <- function(readClass, annotations, emParameters, +bambu.quantify <- function(i, readClassDist, countMatrix, annotations, emParameters, trackReads = FALSE, returnDistTable = FALSE, verbose = FALSE, isoreParameters = setIsoreParameters(NULL)) { - min.exonDistance = isoreParameters[["min.exonDistance"]] - min.primarySecondaryDist = - isoreParameters[['min.primarySecondaryDist']] - min.primarySecondaryDistStartEnd = - isoreParameters[['min.primarySecondaryDistStartEnd2']] - if (is.character(readClass)) readClass <- readRDS(file = readClass) - readClassDist <- isore.estimateDistanceToAnnotations(readClass, annotations, - min.exonDistance = min.exonDistance, - min.primarySecondaryDist = min.primarySecondaryDist, - min.primarySecondaryDistStartEnd = min.primarySecondaryDistStartEnd, - verbose = verbose) - metadata(readClassDist)$distTable <- modifyIncompatibleAssignment(metadata(readClassDist)$distTable) - incompatibleCounts <- processIncompatibleCounts(readClassDist) + + metadata(readClassDist)$distTable$readCount <- countMatrix[,i] + #distTable$readCount <- assays(seReadClass)$counts readClassDt <- genEquiRCs(readClassDist, annotations, verbose) + incompatibleCounts <- processIncompatibleCounts(readClassDist) compatibleCounts <- bambu.quantDT(readClassDt, emParameters = emParameters,verbose = verbose) incompatibleCounts <- incompatibleCounts[data.table(GENEID = unique(mcols(annotations)$GENEID)), on = "GENEID"] incompatibleCounts[is.na(counts), counts := 0] compatibleCounts <- calculateCPM(compatibleCounts, incompatibleCounts) - setnames(incompatibleCounts, "counts", colnames(readClass)) + setnames(incompatibleCounts, "counts", colnames(countMatrix)[i]) counts <- compatibleCounts[match(mcols(annotations)$txid, txid)] - colNameRC <- colnames(readClass) - colDataRC <- colData(readClass) + colNameRC <- colnames(countMatrix)[i] + colDataRC <- NULL # TODO carry over coldata??!! sig.digit <- emParameters[["sig.digit"]] seOutput <- SummarizedExperiment( assays = SimpleList(counts = matrix(round(counts$counts,sig.digit), ncol = 1, @@ -35,12 +26,9 @@ bambu.quantify <- function(readClass, annotations, emParameters, fullLengthCounts = matrix(round(counts$fullLengthCounts,sig.digit), ncol = 1, dimnames = list(NULL, colNameRC)), uniqueCounts = matrix(counts$uniqueCounts, - ncol = 1, dimnames = list(NULL, colNameRC))), colData = colDataRC) + ncol = 1, dimnames = list(NULL, colNameRC)))) metadata(seOutput)$incompatibleCounts = incompatibleCounts - if (returnDistTable) metadata(seOutput)$distTable = metadata(readClassDist)$distTable - if (trackReads) metadata(seOutput)$readToTranscriptMap = - generateReadToTranscriptMap(readClass, metadata(readClassDist)$distTable, - annotations) + return(seOutput) } diff --git a/R/bambu.R b/R/bambu.R index e61d0bfa..12b4a2e6 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -171,11 +171,11 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, isoreParameters, trackReads = trackReads, fusionMode = fusionMode, lowMemory = lowMemory) } - warnings = handleWarnings(readClassList, verbose) + #warnings = handleWarnings(readClassList, verbose) if (!discovery & !quant) return(readClassList) if (discovery) { message("--- Start extending annotations ---") - annotations <- bambu.extendAnnotations(readClassList, annotations, NDR, + annotations <- bambu.extendAnnotations(list(readClassList), annotations, NDR, isoreParameters, stranded, bpParameters, fusionMode, verbose) metadata(annotations)$warnings = warnings if (!quant) return(annotations) @@ -184,7 +184,30 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, message("--- Start isoform quantification ---") if(length(annotations)==0) stop("No valid annotations, if running de novo please try less stringent parameters") - countsSe <- bplapply(readClassList, bambu.quantify, + + #Do distTable calculation once on all read classes + min.exonDistance = isoreParameters[["min.exonDistance"]] + min.primarySecondaryDist = + isoreParameters[['min.primarySecondaryDist']] + min.primarySecondaryDistStartEnd = + isoreParameters[['min.primarySecondaryDistStartEnd2']] + if (is.character(readClassList)) readClassList <- readRDS(file = readClassList) + readClassDist <- isore.estimateDistanceToAnnotations(readClassList, annotations, + min.exonDistance = min.exonDistance, + min.primarySecondaryDist = min.primarySecondaryDist, + min.primarySecondaryDistStartEnd = min.primarySecondaryDistStartEnd, + verbose = verbose) + metadata(readClassDist)$distTable <- modifyIncompatibleAssignment(metadata(readClassDist)$distTable) + #metadata(readClassDist)$distTable <- genEquiRCsBasedOnObservedReads(readClassDist) + # if (trackReads) metadata(seOutput)$readToTranscriptMap = + # generateReadToTranscriptMap(readClass, metadata(readClassDist)$distTable, + # annotations) + # if (returnDistTable) metadata(seOutput)$distTable = metadata(readClassDist)$distTable + + #### + countMatrix2 = metadata(readClassList)$countMatrix[metadata(readClassDist)$distTable$readClassId,] + countsSe <- bplapply(seq_len(ncol(countMatrix2)), bambu.quantify, + readClassDist = readClassDist, countMatrix = countMatrix2, annotations = annotations, isoreParameters = isoreParameters, emParameters = emParameters, trackReads = trackReads, returnDistTable = returnDistTable, verbose = verbose, @@ -196,4 +219,4 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, message("--- Finished running Bambu ---") return(countsSe) } -} \ No newline at end of file +} From b54693eabb024ed8b73126e23f5cd0e157143255 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 26 Sep 2023 17:00:35 +0800 Subject: [PATCH 039/189] quick fix hack to enable readGrgList as input --- R/bambu-processReads.R | 60 ++++++++++++++++++++++++------------------ R/bambu.R | 7 ++--- 2 files changed, 38 insertions(+), 29 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index b6b4dda7..736f7dd4 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -15,44 +15,46 @@ bambu.processReads <- function(reads, annotations, genomeSequence, readClass.outputDir=NULL, yieldSize=1000000, bpParameters, stranded=FALSE, verbose=FALSE, isoreParameters = setIsoreParameters(NULL), - lowMemory=FALSE, trackReads = trackReads, fusionMode = fusionMode) { + lowMemory=FALSE, trackReads = trackReads, fusionMode = fusionMode, rgrLists = FALSE) { genomeSequence <- checkInputSequence(genomeSequence) + if(rgrLists == FALSE){ # ===# create BamFileList object from character #===# - if (is(reads, "BamFile")) { - if (!is.null(yieldSize)) { - yieldSize(reads) <- yieldSize + if (is(reads, "BamFile")) { + if (!is.null(yieldSize)) { + yieldSize(reads) <- yieldSize + } else { + yieldSize <- yieldSize(reads) + } + reads <- BamFileList(reads) + names(reads) <- tools::file_path_sans_ext(BiocGenerics::basename(reads)) + } else if (is(reads, "BamFileList")) { + if (!is.null(yieldSize)) { + yieldSize(reads) <- yieldSize + } else { + yieldSize <- min(yieldSize(reads)) + } + } else if (any(!grepl("\\.bam$", reads))) { + stop("Bam file is missing from arguments.") } else { - yieldSize <- yieldSize(reads) + if (is.null(yieldSize)) yieldSize <- NA + reads <- BamFileList(reads, yieldSize = yieldSize) + names(reads) <- tools::file_path_sans_ext(BiocGenerics::basename(reads)) } - reads <- BamFileList(reads) - names(reads) <- tools::file_path_sans_ext(BiocGenerics::basename(reads)) - } else if (is(reads, "BamFileList")) { - if (!is.null(yieldSize)) { - yieldSize(reads) <- yieldSize - } else { - yieldSize <- min(yieldSize(reads)) - } - } else if (any(!grepl("\\.bam$", reads))) { - stop("Bam file is missing from arguments.") - } else { - if (is.null(yieldSize)) yieldSize <- NA - reads <- BamFileList(reads, yieldSize = yieldSize) - names(reads) <- tools::file_path_sans_ext(BiocGenerics::basename(reads)) } min.readCount = isoreParameters[["min.readCount"]] fitReadClassModel = isoreParameters[["fitReadClassModel"]] defaultModels = isoreParameters[["defaultModels"]] returnModel = isoreParameters[["returnModel"]] min.exonOverlap = isoreParameters[["min.exonOverlap"]] - + readGrgList <- bplapply(seq_along(reads), function(i) { - bambu.processReadsByFile(bam.file = reads[names(reads)[i]], + bambu.processReadsByFile(bam.file = reads[i], genomeSequence = genomeSequence,annotations = annotations, readClass.outputDir = readClass.outputDir, stranded = stranded, min.readCount = min.readCount, fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, - lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode, index = i)}, + lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode, index = i, rgrLists = rgrLists)}, BPPARAM = bpParameters) readGrgList = do.call(c, readGrgList) mcols(readGrgList)$id <- seq_along(readGrgList) @@ -64,7 +66,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode) - metadata(readClassList)$samples = names(reads) + metadata(readClassList)$samples = reads countMatrix = splitReadClassFiles(readClassList) colnames(countMatrix) = metadata(readClassList)$samples rownames(countMatrix) = rownames(readClassList) @@ -106,9 +108,15 @@ bambu.processReads <- function(reads, annotations, genomeSequence, bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, readClass.outputDir = NULL, stranded = FALSE, min.readCount = 2, fitReadClassModel = TRUE, min.exonOverlap = 10, defaultModels = NULL, returnModel = FALSE, - verbose = FALSE, lowMemory = FALSE, trackReads = FALSE, fusionMode = FALSE, index = 0) { - if(verbose) message(names(bam.file)[1]) - readGrgList <- prepareDataFromBam(bam.file[[1]], verbose = verbose, use.names = trackReads) + verbose = FALSE, lowMemory = FALSE, trackReads = FALSE, fusionMode = FALSE, index = 0, rgrLists = FALSE) { + #if(verbose) message(names(bam.file)[1]) + if(rgrLists){ + print(bam.file) + readGrgList <- readRDS(bam.file) + } else{ + readGrgList <- prepareDataFromBam(bam.file[[1]], verbose = verbose, use.names = trackReads) + } + warnings = c() warnings = seqlevelCheckReadsAnnotation(readGrgList, annotations) if(verbose & length(warnings) > 0) warning(paste(warnings,collapse = "\n")) diff --git a/R/bambu.R b/R/bambu.R index 12b4a2e6..3b8a9cde 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -139,7 +139,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, opt.discovery = NULL, opt.em = NULL, rcOutDir = NULL, discovery = TRUE, quant = TRUE, stranded = FALSE, ncore = 1, yieldSize = NULL, trackReads = FALSE, returnDistTable = FALSE, lowMemory = FALSE, - fusionMode = FALSE, verbose = FALSE) { + fusionMode = FALSE, verbose = FALSE, rgrLists = FALSE) { if(is.null(annotations)) { annotations = GRangesList() } else annotations <- checkInputs(annotations, reads, readClass.outputDir = rcOutDir, genomeSequence = genome) @@ -155,7 +155,8 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, isRDSs = all(sapply(reads, class)=="RangedSummarizedExperiment") isBamFiles = !isRDSs if(!isRDSs) isBamFiles = ifelse(!is(reads, "BamFileList"), all(grepl(".bam$", reads)), FALSE) - if (isBamFiles | is(reads, "BamFileList")) { + if(TRUE){ + #if (isBamFiles | is(reads, "BamFileList")) { if (length(reads) > 10 & (is.null(rcOutDir))) { rcOutDir <- tempdir() #>=10 samples, save to temp folder message("There are more than 10 samples, read class files @@ -169,7 +170,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, readClass.outputDir = rcOutDir, yieldSize, bpParameters, stranded, verbose, isoreParameters, trackReads = trackReads, fusionMode = fusionMode, - lowMemory = lowMemory) + lowMemory = lowMemory, rgrLists = rgrLists) } #warnings = handleWarnings(readClassList, verbose) if (!discovery & !quant) return(readClassList) From 699034a39c8174b6369de7765a020606beff2570 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 28 Sep 2023 09:54:00 +0800 Subject: [PATCH 040/189] small temp hack to allow readClassInput for now --- R/bambu.R | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/R/bambu.R b/R/bambu.R index 3b8a9cde..d0757628 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -155,7 +155,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, isRDSs = all(sapply(reads, class)=="RangedSummarizedExperiment") isBamFiles = !isRDSs if(!isRDSs) isBamFiles = ifelse(!is(reads, "BamFileList"), all(grepl(".bam$", reads)), FALSE) - if(TRUE){ + if(rgrLists){ #if (isBamFiles | is(reads, "BamFileList")) { if (length(reads) > 10 & (is.null(rcOutDir))) { rcOutDir <- tempdir() #>=10 samples, save to temp folder @@ -193,6 +193,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, min.primarySecondaryDistStartEnd = isoreParameters[['min.primarySecondaryDistStartEnd2']] if (is.character(readClassList)) readClassList <- readRDS(file = readClassList) + if(is.list(readClassList)) readClassList = readClassList[[1]] readClassDist <- isore.estimateDistanceToAnnotations(readClassList, annotations, min.exonDistance = min.exonDistance, min.primarySecondaryDist = min.primarySecondaryDist, From 5fae869df82fb16f8f9f73a572544a5dca8126c4 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 28 Sep 2023 11:13:42 +0800 Subject: [PATCH 041/189] Move getUniCountPerEquiRC outside bplapply --- R/bambu-quantify_utilityFunctions.R | 7 +++---- R/bambu.R | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/R/bambu-quantify_utilityFunctions.R b/R/bambu-quantify_utilityFunctions.R index 39a48c9a..1db1a6f9 100644 --- a/R/bambu-quantify_utilityFunctions.R +++ b/R/bambu-quantify_utilityFunctions.R @@ -44,19 +44,18 @@ processIncompatibleCounts <- function(readClassDist){ #' @import data.table #' @noRd genEquiRCs <- function(readClassDist, annotations, verbose){ - distTable <- genEquiRCsBasedOnObservedReads(readClassDist) - eqClassCount <- getUniCountPerEquiRC(distTable) + eqClassCount <- getUniCountPerEquiRC(metadata(readClassDist)$distTable) eqClassTable <- addEmptyRC(eqClassCount, annotations) # create equiRC id eqClassTable <- eqClassTable %>% group_by(eqClassById) %>% mutate(eqClassId = cur_group_id()) %>% data.table() - + tx_len <- rbind(data.table(txid = mcols(annotations)$txid, txlen = sum(width(annotations)))) eqClassTable <- tx_len[eqClassTable, on = "txid"] %>% distinct() - + # remove unused columns eqClassTable[, eqClassById := NULL] return(eqClassTable) diff --git a/R/bambu.R b/R/bambu.R index d0757628..481047ad 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -200,7 +200,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, min.primarySecondaryDistStartEnd = min.primarySecondaryDistStartEnd, verbose = verbose) metadata(readClassDist)$distTable <- modifyIncompatibleAssignment(metadata(readClassDist)$distTable) - #metadata(readClassDist)$distTable <- genEquiRCsBasedOnObservedReads(readClassDist) + metadata(readClassDist)$distTable <- genEquiRCsBasedOnObservedReads(readClassDist) # if (trackReads) metadata(seOutput)$readToTranscriptMap = # generateReadToTranscriptMap(readClass, metadata(readClassDist)$distTable, # annotations) From 22a8aaf791a8c4d64b7fda0e6f534f4acaae3464 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 28 Sep 2023 18:10:38 +0800 Subject: [PATCH 042/189] Speed up bambu.quant --- DESCRIPTION | 3 ++- NAMESPACE | 1 + R/bambu-quantify.R | 27 +++++++++++++++++++++++---- R/bambu-quantify_utilityFunctions.R | 3 ++- R/bambu.R | 3 ++- 5 files changed, 30 insertions(+), 7 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index d6a36949..c5a34856 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -86,7 +86,8 @@ Imports: Rsamtools, methods, Rcpp, - xgboost + xgboost, + Matrix VignetteBuilder: knitr LazyData: true diff --git a/NAMESPACE b/NAMESPACE index b4c51d05..7fa99dc8 100755 --- a/NAMESPACE +++ b/NAMESPACE @@ -76,4 +76,5 @@ import(SummarizedExperiment) import(S4Vectors, except=c(rename, setequal, setdiff, intersect,cor)) useDynLib(bambu, .registration = TRUE) import(xgboost) +import(Matrix) import(BSgenome) diff --git a/R/bambu-quantify.R b/R/bambu-quantify.R index 3b10eabf..ad2c5344 100644 --- a/R/bambu-quantify.R +++ b/R/bambu-quantify.R @@ -2,13 +2,33 @@ #' @inheritParams bambu #' @import data.table #' @noRd -bambu.quantify <- function(i, readClassDist, countMatrix, annotations, emParameters, +bambu.quantify <- function(i, readClassDist, readClassDt, countMatrix, annotations, emParameters, trackReads = FALSE, returnDistTable = FALSE, verbose = FALSE, isoreParameters = setIsoreParameters(NULL)) { - metadata(readClassDist)$distTable$readCount <- countMatrix[,i] + metadata(readClassDist)$distTable = metadata(readClassDist)$distTable[metadata(readClassDist)$distTable$readCount != 0,] #distTable$readCount <- assays(seReadClass)$counts - readClassDt <- genEquiRCs(readClassDist, annotations, verbose) + + + #calculate equivilent class counts + start.ptm <- proc.time() + y = metadata(readClassDist)$distTable %>% group_by(eqClassById) %>% + mutate(anyEqual = any(equal)) %>% + select(eqClassById, firstExonWidth,totalWidth, readCount,GENEID,anyEqual) %>% #eqClassByIdTemp, + distinct() %>% + mutate(nobs = sum(readCount), + rcWidth = ifelse(anyEqual, max(totalWidth), + max(firstExonWidth))) %>% + select(eqClassById,GENEID,nobs,rcWidth) %>% + ungroup() %>% + distinct() + readClassDt$nobs = y$nobs[match(readClassDt$eqClassById,y$eqClassById)] + readClassDt$nobs[is.na(readClassDt$nobs)] = 0 + end.ptm <- proc.time() + if (verbose) message("Finished eqv.class counts in ", + round((end.ptm - start.ptm)[3] / 60, 1), " mins.") + #### + incompatibleCounts <- processIncompatibleCounts(readClassDist) compatibleCounts <- bambu.quantDT(readClassDt, emParameters = emParameters,verbose = verbose) incompatibleCounts <- incompatibleCounts[data.table(GENEID = unique(mcols(annotations)$GENEID)), on = "GENEID"] @@ -28,7 +48,6 @@ bambu.quantify <- function(i, readClassDist, countMatrix, annotations, emParamet uniqueCounts = matrix(counts$uniqueCounts, ncol = 1, dimnames = list(NULL, colNameRC)))) metadata(seOutput)$incompatibleCounts = incompatibleCounts - return(seOutput) } diff --git a/R/bambu-quantify_utilityFunctions.R b/R/bambu-quantify_utilityFunctions.R index 1db1a6f9..a1c30fdc 100644 --- a/R/bambu-quantify_utilityFunctions.R +++ b/R/bambu-quantify_utilityFunctions.R @@ -57,7 +57,8 @@ genEquiRCs <- function(readClassDist, annotations, verbose){ eqClassTable <- tx_len[eqClassTable, on = "txid"] %>% distinct() # remove unused columns - eqClassTable[, eqClassById := NULL] + #eqClassTable[, eqClassById := NULL] + return(eqClassTable) } diff --git a/R/bambu.R b/R/bambu.R index 481047ad..32e42e1f 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -208,8 +208,9 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, #### countMatrix2 = metadata(readClassList)$countMatrix[metadata(readClassDist)$distTable$readClassId,] + readClassDt <- genEquiRCs(readClassDist, annotations, verbose) countsSe <- bplapply(seq_len(ncol(countMatrix2)), bambu.quantify, - readClassDist = readClassDist, countMatrix = countMatrix2, + readClassDist = readClassDist, readClassDt = readClassDt, countMatrix = countMatrix2, annotations = annotations, isoreParameters = isoreParameters, emParameters = emParameters, trackReads = trackReads, returnDistTable = returnDistTable, verbose = verbose, From e7d3c7b08ead127d23cf9509cfcba8ce7bc99c25 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 28 Sep 2023 18:16:58 +0800 Subject: [PATCH 043/189] Clean up bambu.quantify and add calculateEqClassCounts --- R/bambu-quantify.R | 23 +---------------------- R/bambu-quantify_utilityFunctions.R | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/R/bambu-quantify.R b/R/bambu-quantify.R index ad2c5344..ed4d09a8 100644 --- a/R/bambu-quantify.R +++ b/R/bambu-quantify.R @@ -7,28 +7,7 @@ bambu.quantify <- function(i, readClassDist, readClassDt, countMatrix, annotatio verbose = FALSE, isoreParameters = setIsoreParameters(NULL)) { metadata(readClassDist)$distTable$readCount <- countMatrix[,i] metadata(readClassDist)$distTable = metadata(readClassDist)$distTable[metadata(readClassDist)$distTable$readCount != 0,] - #distTable$readCount <- assays(seReadClass)$counts - - - #calculate equivilent class counts - start.ptm <- proc.time() - y = metadata(readClassDist)$distTable %>% group_by(eqClassById) %>% - mutate(anyEqual = any(equal)) %>% - select(eqClassById, firstExonWidth,totalWidth, readCount,GENEID,anyEqual) %>% #eqClassByIdTemp, - distinct() %>% - mutate(nobs = sum(readCount), - rcWidth = ifelse(anyEqual, max(totalWidth), - max(firstExonWidth))) %>% - select(eqClassById,GENEID,nobs,rcWidth) %>% - ungroup() %>% - distinct() - readClassDt$nobs = y$nobs[match(readClassDt$eqClassById,y$eqClassById)] - readClassDt$nobs[is.na(readClassDt$nobs)] = 0 - end.ptm <- proc.time() - if (verbose) message("Finished eqv.class counts in ", - round((end.ptm - start.ptm)[3] / 60, 1), " mins.") - #### - + readClassDt$nobs = calculateEqClassCounts(metadata(readClassDist)$distTable, readClassDt) incompatibleCounts <- processIncompatibleCounts(readClassDist) compatibleCounts <- bambu.quantDT(readClassDt, emParameters = emParameters,verbose = verbose) incompatibleCounts <- incompatibleCounts[data.table(GENEID = unique(mcols(annotations)$GENEID)), on = "GENEID"] diff --git a/R/bambu-quantify_utilityFunctions.R b/R/bambu-quantify_utilityFunctions.R index a1c30fdc..bebcb0e2 100644 --- a/R/bambu-quantify_utilityFunctions.R +++ b/R/bambu-quantify_utilityFunctions.R @@ -487,6 +487,23 @@ generateReadToTranscriptMap <- function(readClass, distTable, annotations){ return(readToTranscriptMap) } +#' Get counts of equivilent classes from a distTable and match to a readClassDt +#' @noRd +calculateEqClassCounts = function(distTable, readClassDt){ + eqClasses = distTable %>% group_by(eqClassById) %>% + mutate(anyEqual = any(equal)) %>% + select(eqClassById, firstExonWidth,totalWidth, readCount,GENEID,anyEqual) %>% #eqClassByIdTemp, + distinct() %>% + mutate(nobs = sum(readCount), + rcWidth = ifelse(anyEqual, max(totalWidth), + max(firstExonWidth))) %>% + select(eqClassById,GENEID,nobs,rcWidth) %>% + ungroup() %>% + distinct() + eqCounts = y$nobs[match(readClassDt$eqClassById,eqClasses$eqClassById)] + eqCounts[is.na(eqCounts)] = 0 + return(eqCounts) + } #' calculate CPM post estimation #' @noRd From 136f9a61257db18c15a7c51cc6f1eec7c29d8fc1 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 28 Sep 2023 18:23:50 +0800 Subject: [PATCH 044/189] Tidy up code --- R/bambu.R | 24 +++++++++--------------- R/bambu_utilityFunctions.R | 16 ---------------- 2 files changed, 9 insertions(+), 31 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 32e42e1f..9daa3f14 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -186,25 +186,15 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, if(length(annotations)==0) stop("No valid annotations, if running de novo please try less stringent parameters") - #Do distTable calculation once on all read classes - min.exonDistance = isoreParameters[["min.exonDistance"]] - min.primarySecondaryDist = - isoreParameters[['min.primarySecondaryDist']] - min.primarySecondaryDistStartEnd = - isoreParameters[['min.primarySecondaryDistStartEnd2']] if (is.character(readClassList)) readClassList <- readRDS(file = readClassList) if(is.list(readClassList)) readClassList = readClassList[[1]] readClassDist <- isore.estimateDistanceToAnnotations(readClassList, annotations, - min.exonDistance = min.exonDistance, - min.primarySecondaryDist = min.primarySecondaryDist, - min.primarySecondaryDistStartEnd = min.primarySecondaryDistStartEnd, + min.exonDistance = isoreParameters[["min.exonDistance"]], + min.primarySecondaryDist = isoreParameters[['min.primarySecondaryDist']] + min.primarySecondaryDistStartEnd = isoreParameters[['min.primarySecondaryDistStartEnd2']], verbose = verbose) metadata(readClassDist)$distTable <- modifyIncompatibleAssignment(metadata(readClassDist)$distTable) - metadata(readClassDist)$distTable <- genEquiRCsBasedOnObservedReads(readClassDist) - # if (trackReads) metadata(seOutput)$readToTranscriptMap = - # generateReadToTranscriptMap(readClass, metadata(readClassDist)$distTable, - # annotations) - # if (returnDistTable) metadata(seOutput)$distTable = metadata(readClassDist)$distTable + metadata(readClassDist)$distTable <- genEquiRCsBasedOnObservedReads(readClassDist) #### countMatrix2 = metadata(readClassList)$countMatrix[metadata(readClassDist)$distTable$readClassId,] @@ -215,9 +205,13 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, emParameters = emParameters, trackReads = trackReads, returnDistTable = returnDistTable, verbose = verbose, BPPARAM = bpParameters) - countsSe <- combineCountSes(countsSe, trackReads, returnDistTable) + countsSe <- combineCountSes(countsSe, trackReads) rowRanges(countsSe) <- annotations metadata(countsSe)$warnings = warnings + if (trackReads) metadata(seOutput)$readToTranscriptMap = + generateReadToTranscriptMap(readClass, metadata(readClassDist)$distTable, + annotations) + if (returnDistTable) metadata(seOutput)$distTable = metadata(readClassDist)$distTable if (rm.readClassSe) file.remove(unlist(readClassList)) message("--- Finished running Bambu ---") return(countsSe) diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index 8d8b98d1..d22db18e 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -214,28 +214,12 @@ handleWarnings <- function(readClassList, verbose){ #' @noRd combineCountSes <- function(countsSe, trackReads = FALSE, returnDistTable = FALSE){ sampleNames = sapply(countsSe, FUN = function(x){colnames(x)}) - if(trackReads){ - readToTranscriptMaps = lapply(countsSe, FUN = function(se){metadata(se)$readToTranscriptMap}) - names(readToTranscriptMaps) = sampleNames - countsSe = lapply(countsSe, FUN = function(se){ - metadata(se)$readToTranscriptMap=NULL - return(se)}) - } - if(returnDistTable){ - distTables = lapply(countsSe, FUN = function(se){metadata(se)$distTable}) - names(distTables) = sampleNames - countsSe = lapply(countsSe, FUN = function(se){ - metadata(se)$distTable=NULL - return(se)}) - } # combine incompatible counts incompatibleCounts = Reduce(merge_wrapper, lapply(countsSe, FUN = function(se){metadata(se)$incompatibleCounts})) countsSe = lapply(countsSe, FUN = function(se){ metadata(se)$incompatibleCounts=NULL return(se)}) countsSe <- do.call(SummarizedExperiment::cbind, countsSe) - if(trackReads) metadata(countsSe)$readToTranscriptMaps = readToTranscriptMaps - if(returnDistTable) metadata(countsSe)$distTables = distTables metadata(countsSe)$incompatibleCounts = incompatibleCounts return(countsSe) } From df4476bc4f1e21fcfb6c2e890ec3629d8da2dc8d Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 28 Sep 2023 18:24:15 +0800 Subject: [PATCH 045/189] Also tidy up --- R/bambu.R | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 9daa3f14..4371b7bf 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -195,8 +195,6 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, verbose = verbose) metadata(readClassDist)$distTable <- modifyIncompatibleAssignment(metadata(readClassDist)$distTable) metadata(readClassDist)$distTable <- genEquiRCsBasedOnObservedReads(readClassDist) - - #### countMatrix2 = metadata(readClassList)$countMatrix[metadata(readClassDist)$distTable$readClassId,] readClassDt <- genEquiRCs(readClassDist, annotations, verbose) countsSe <- bplapply(seq_len(ncol(countMatrix2)), bambu.quantify, @@ -205,7 +203,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, emParameters = emParameters, trackReads = trackReads, returnDistTable = returnDistTable, verbose = verbose, BPPARAM = bpParameters) - countsSe <- combineCountSes(countsSe, trackReads) + countsSe <- combineCountSes(countsSe) rowRanges(countsSe) <- annotations metadata(countsSe)$warnings = warnings if (trackReads) metadata(seOutput)$readToTranscriptMap = From ea452f00750068dbd4a7c4c5aab975def6115d85 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 2 Oct 2023 16:03:56 +0800 Subject: [PATCH 046/189] Fix issue where old memory was used --- R/bambu-processReads.R | 16 +++++++++++++--- R/bambu-quantify_utilityFunctions.R | 2 +- R/bambu.R | 12 ++++++------ 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 736f7dd4..18520287 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -65,9 +65,9 @@ bambu.processReads <- function(reads, annotations, genomeSequence, fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode) - - metadata(readClassList)$samples = reads + metadata(readClassList)$samples = names(reads) countMatrix = splitReadClassFiles(readClassList) + colnames(countMatrix) = metadata(readClassList)$samples rownames(countMatrix) = rownames(readClassList) metadata(readClassList)$countMatrix = countMatrix @@ -158,7 +158,6 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, if(length(readGrgList) == 0) { stop("No reads left after filtering.") } - return(readGrgList) } @@ -258,5 +257,16 @@ splitReadClassFiles = function(readClassFile){ counts = sparseMatrix(i = rowIndex, j = rep(seq_along(metadata(readClassFile)$samples), sampleCount), x = counts) + +# countMat = sapply(seq_along(metadata(readClassFile)$samples), FUN = function(i){ +# counts.sample = sapply(rowData(readClassFile)$sampleIDs, FUN = function(x){sum(x==i)}) +# return(c(counts.sample[counts.sample != 0], #counts +# which(counts.sample != 0)), #rowindex +# sum(counts.sample !=0)) #sampleCount +# }) +# counts = sparseMatrix(i = countMat[2,], +# j = rep(seq_along(metadata(readClassFile)$samples), countMat[3,]), +# x = countMat[1,]) + return(counts) } \ No newline at end of file diff --git a/R/bambu-quantify_utilityFunctions.R b/R/bambu-quantify_utilityFunctions.R index bebcb0e2..bf07d9dd 100644 --- a/R/bambu-quantify_utilityFunctions.R +++ b/R/bambu-quantify_utilityFunctions.R @@ -500,7 +500,7 @@ calculateEqClassCounts = function(distTable, readClassDt){ select(eqClassById,GENEID,nobs,rcWidth) %>% ungroup() %>% distinct() - eqCounts = y$nobs[match(readClassDt$eqClassById,eqClasses$eqClassById)] + eqCounts = eqClasses$nobs[match(readClassDt$eqClassById,eqClasses$eqClassById)] eqCounts[is.na(eqCounts)] = 0 return(eqCounts) } diff --git a/R/bambu.R b/R/bambu.R index 4371b7bf..90714e38 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -155,8 +155,8 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, isRDSs = all(sapply(reads, class)=="RangedSummarizedExperiment") isBamFiles = !isRDSs if(!isRDSs) isBamFiles = ifelse(!is(reads, "BamFileList"), all(grepl(".bam$", reads)), FALSE) - if(rgrLists){ - #if (isBamFiles | is(reads, "BamFileList")) { + #if(rgrLists){ + if (isBamFiles | is(reads, "BamFileList")) { if (length(reads) > 10 & (is.null(rcOutDir))) { rcOutDir <- tempdir() #>=10 samples, save to temp folder message("There are more than 10 samples, read class files @@ -176,7 +176,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, if (!discovery & !quant) return(readClassList) if (discovery) { message("--- Start extending annotations ---") - annotations <- bambu.extendAnnotations(list(readClassList), annotations, NDR, + annotations <- bambu.extendAnnotations(readClassList, annotations, NDR, isoreParameters, stranded, bpParameters, fusionMode, verbose) metadata(annotations)$warnings = warnings if (!quant) return(annotations) @@ -190,11 +190,11 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, if(is.list(readClassList)) readClassList = readClassList[[1]] readClassDist <- isore.estimateDistanceToAnnotations(readClassList, annotations, min.exonDistance = isoreParameters[["min.exonDistance"]], - min.primarySecondaryDist = isoreParameters[['min.primarySecondaryDist']] + min.primarySecondaryDist = isoreParameters[['min.primarySecondaryDist']], min.primarySecondaryDistStartEnd = isoreParameters[['min.primarySecondaryDistStartEnd2']], verbose = verbose) metadata(readClassDist)$distTable <- modifyIncompatibleAssignment(metadata(readClassDist)$distTable) - metadata(readClassDist)$distTable <- genEquiRCsBasedOnObservedReads(readClassDist) + metadata(readClassDist)$distTable <- genEquiRCsBasedOnObservedReads(readClassDist) countMatrix2 = metadata(readClassList)$countMatrix[metadata(readClassDist)$distTable$readClassId,] readClassDt <- genEquiRCs(readClassDist, annotations, verbose) countsSe <- bplapply(seq_len(ncol(countMatrix2)), bambu.quantify, @@ -205,7 +205,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, BPPARAM = bpParameters) countsSe <- combineCountSes(countsSe) rowRanges(countsSe) <- annotations - metadata(countsSe)$warnings = warnings + #metadata(countsSe)$warnings = warnings if (trackReads) metadata(seOutput)$readToTranscriptMap = generateReadToTranscriptMap(readClass, metadata(readClassDist)$distTable, annotations) From d739035d4e763196f7f43d30673af32e5df6c97a Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 2 Oct 2023 16:08:41 +0800 Subject: [PATCH 047/189] MessyForest --- R/bambu-processReads.R | 133 ++++++++---- ...processReads_utilityConstructReadClasses.R | 61 +++--- R/bambu-quantify.R | 151 ++++++++------ R/bambu.R | 191 +++++++++++++----- R/bambu_utilityFunctions.R | 25 +-- R/prepareDataFromBam.R | 23 ++- R/readWrite.R | 50 ++++- R/transcriptToGeneExpression.R | 8 +- 8 files changed, 430 insertions(+), 212 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 31246d35..d4dad79e 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -15,7 +15,8 @@ bambu.processReads <- function(reads, annotations, genomeSequence, readClass.outputDir=NULL, yieldSize=1000000, bpParameters, stranded=FALSE, verbose=FALSE, isoreParameters = setIsoreParameters(NULL), - lowMemory=FALSE, trackReads = trackReads, fusionMode = fusionMode) { + lowMemory=FALSE, trackReads = trackReads, fusionMode = fusionMode, + demultiplexed = demultiplexed, readGrgListFile = readGrgListFile) { genomeSequence <- checkInputSequence(genomeSequence) # ===# create BamFileList object from character #===# if (is(reads, "BamFile")) { @@ -44,15 +45,24 @@ bambu.processReads <- function(reads, annotations, genomeSequence, defaultModels = isoreParameters[["defaultModels"]] returnModel = isoreParameters[["returnModel"]] min.exonOverlap = isoreParameters[["min.exonOverlap"]] - readClassList <- bplapply(names(reads), function(bamFileName) { + + ### add ### + if (!is.null(readGrgListFile)){ + reads <- as.list(readGrgListFile) + names(reads) <- tools::file_path_sans_ext(BiocGenerics::basename(readGrgListFile)) + } + ### add ### + readClassList <- bplapply(names(reads), function(bamFileName){ bambu.processReadsByFile(bam.file = reads[bamFileName], - genomeSequence = genomeSequence,annotations = annotations, - readClass.outputDir = readClass.outputDir, + genomeSequence = genomeSequence, annotations = annotations, + readClass.outputDir = readClass.outputDir, yieldSize = yieldSize, stranded = stranded, min.readCount = min.readCount, fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, - lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode)}, + lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode, + demultiplexed = demultiplexed, readGrgListFile = readGrgListFile)}, BPPARAM = bpParameters) + return(readClassList) } @@ -61,55 +71,88 @@ bambu.processReads <- function(reads, annotations, genomeSequence, #' @importFrom GenomeInfoDb seqlevels seqlevels<- keepSeqlevels #' @noRd bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, - readClass.outputDir = NULL, stranded = FALSE, min.readCount = 2, + readClass.outputDir = NULL, yieldSize = NULL, stranded = FALSE, min.readCount = 2, fitReadClassModel = TRUE, min.exonOverlap = 10, defaultModels = NULL, returnModel = FALSE, - verbose = FALSE, lowMemory = FALSE, trackReads = FALSE, fusionMode = FALSE) { - if(verbose) message(names(bam.file)[1]) - readGrgList <- prepareDataFromBam(bam.file[[1]], verbose = verbose, use.names = trackReads) - warnings = c() - warnings = seqlevelCheckReadsAnnotation(readGrgList, annotations) - if(verbose & length(warnings) > 0) warning(paste(warnings,collapse = "\n")) - #check seqlevels for consistency, drop ranges not present in genomeSequence - refSeqLevels <- seqlevels(genomeSequence) - if (!all(seqlevels(readGrgList) %in% refSeqLevels)) { + verbose = FALSE, lowMemory = FALSE, trackReads = FALSE, fusionMode = FALSE, + demultiplexed = FALSE, readGrgListFile = NULL) { + ### add ### + if (is.null(readGrgListFile)){ + ### add ### + if(verbose) message(names(bam.file)[1]) + readGrgList <- prepareDataFromBam(bam.file[[1]], yieldSize = yieldSize, verbose = verbose, use.names = trackReads, + demultiplexed = demultiplexed) + warnings = c() + warnings = seqlevelCheckReadsAnnotation(readGrgList, annotations) + if(verbose & length(warnings) > 0) warning(paste(warnings,collapse = "\n")) + #check seqlevels for consistency, drop ranges not present in genomeSequence + refSeqLevels <- seqlevels(genomeSequence) + if (!all(seqlevels(readGrgList) %in% refSeqLevels)) { refSeqLevels <- intersect(refSeqLevels, seqlevels(readGrgList)) if (!all(seqlevels(annotations) %in% refSeqLevels)&(!(length(annotations)==0))) { - refSeqLevels <- intersect(refSeqLevels, seqlevels(annotations)) - warningText = paste0("not all chromosomes from annotations present in ", - "reference genome sequence, annotations without reference genomic sequence ", - "are dropped") - warnings = c(warnings, warningText) - if(verbose) warning(warningText) - annotations <- keepSeqlevels(annotations, value = refSeqLevels, - pruning.mode = "coarse") + refSeqLevels <- intersect(refSeqLevels, seqlevels(annotations)) + warningText = paste0("not all chromosomes from annotations present in ", + "reference genome sequence, annotations without reference genomic sequence ", + "are dropped") + warnings = c(warnings, warningText) + if(verbose) warning(warningText) + annotations <- keepSeqlevels(annotations, value = refSeqLevels, + pruning.mode = "coarse") } warningText = paste0("not all chromosomes from reads present in reference ", - "genome sequence, reads without reference chromosome sequence are dropped") + "genome sequence, reads without reference chromosome sequence are dropped") warnings = c(warnings, warningText) if(verbose) warning(warningText) readGrgList <- keepSeqlevels(readGrgList, value = refSeqLevels, pruning.mode = "coarse") - # reassign Ids after seqlevels are dropped - mcols(readGrgList)$id <- seq_along(readGrgList) - } - #removes reads that are outside genome coordinates - badReads = which(max(end(ranges(readGrgList)))>= + } + #removes reads that are outside genome coordinates + badReads = which(max(end(ranges(readGrgList)))>= seqlengths(genomeSequence)[as.character(getChrFromGrList(readGrgList))]) - if(length(badReads) > 0 ){ + if(length(badReads) > 0 ){ readGrgList = readGrgList[-badReads] warningText = paste0(length(badReads), " reads are mapped outside the provided ", - "genomic regions. These reads will be dropped. Check you are using the ", - "same genome used for the alignment") + "genomic regions. These reads will be dropped. Check you are using the ", + "same genome used for the alignment") warnings = c(warnings, warningText) if(verbose) warning(warningText) - } - if(length(readGrgList) == 0) { + } + + ### add ### + # reassign Ids after seqlevels are dropped + mcols(readGrgList)$id <- seq_along(readGrgList) + ### add ### + + if(length(readGrgList) == 0) { stop("No reads left after filtering.") + } + + ## add ### + if (isTRUE(demultiplexed)){ + cellBarcodeAssign <- tibble(index = mcols(readGrgList)$id, CB = mcols(readGrgList)$CB) %>% nest(.by = "CB") + + if (!dir.exists("CB")){ + dir.create("CB") + } else{ + unlink(paste("CB", "*", sep = "/")) + } + + invisible(lapply(seq(nrow(cellBarcodeAssign)), + function(x){saveRDS(readGrgList[pull(cellBarcodeAssign$data[[x]])], paste0("CB/", cellBarcodeAssign$CB[[x]],".rds"))})) + } + ## add ### + + ### add ### + } else { + + readGrgList <- readRDS(bam.file[[1]]) + } + ### add ### + # construct read classes for each chromosome seperately - if(lowMemory) se <- lowMemoryConstructReadClasses(readGrgList, genomeSequence, + if(lowMemory) {se <- lowMemoryConstructReadClasses(readGrgList, genomeSequence, annotations, stranded, verbose,bam.file) - else { + } else { unlisted_junctions <- unlistIntrons(readGrgList, use.ids = TRUE) if(length(unlisted_junctions)==0){ warningText = paste0("No aligned spliced reads detected!", @@ -132,9 +175,15 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, metadata(se)$readId = mcols(readGrgList)$id } rm(readGrgList) - GenomeInfoDb::seqlevels(se) <- refSeqLevels + + ### add ### + if (is.null(readGrgListFile)){ + GenomeInfoDb::seqlevels(se) <- refSeqLevels + } + ### add ### + # create SE object with reconstructed readClasses - se <- scoreReadClasses(se,genomeSequence, annotations, + se <- scoreReadClasses(se, genomeSequence, annotations, defaultModels = defaultModels, fit = fitReadClassModel, returnModel = returnModel, @@ -142,6 +191,7 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, min.exonOverlap = min.exonOverlap, fusionMode = fusionMode, verbose = verbose) + if (!is.null(readClass.outputDir)) { readClassFile <- paste0(readClass.outputDir,names(bam.file), "_readClassSe.rds") @@ -156,6 +206,11 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, saveRDS(se, file = readClassFile) se <- readClassFile } + + if (!is.null(readGrgListFile)){ + se <- names(se) + } + return(se) } @@ -194,4 +249,4 @@ seqlevelCheckReadsAnnotation <- function(reads, annotations){ "annotations might be incomplete. Please compare objects ", "on the same reference")) return(warnings) -} \ No newline at end of file +} diff --git a/R/bambu-processReads_utilityConstructReadClasses.R b/R/bambu-processReads_utilityConstructReadClasses.R index 4858798b..999e53b0 100644 --- a/R/bambu-processReads_utilityConstructReadClasses.R +++ b/R/bambu-processReads_utilityConstructReadClasses.R @@ -385,12 +385,10 @@ assignGeneIds <- function(grl, annotations, min.exonOverlap = 10, fusionMode = fusionMode = fusionMode) #iteratively assign gene ids for stranded granges newGeneSet <- is.na(mcols(grl)$GENEID) & strandedRanges - if(sum(newGeneSet != 0)){ - referenceGeneSet <- !is.na(mcols(grl)$GENEID) & strandedRanges - mcols(grl)$GENEID[newGeneSet] <- assignGeneIdsByReference(grl[newGeneSet], grl[referenceGeneSet], - min.exonOverlap = min.exonOverlap, - fusionMode = FALSE) # fusion assignment is only done based on original annotations - } + referenceGeneSet <- !is.na(mcols(grl)$GENEID) & strandedRanges + mcols(grl)$GENEID[newGeneSet] <- assignGeneIdsByReference(grl[newGeneSet], grl[referenceGeneSet], + min.exonOverlap = min.exonOverlap, + fusionMode = FALSE) # fusion assignment is only done based on original annotations chainCount <- 1 # first iteration is outside of while loop while(any(!is.na(mcols(grl)$GENEID[newGeneSet])) & chainCount < maxChainIteration) { referenceGeneSet <- newGeneSet & !is.na(mcols(grl)$GENEID) & strandedRanges @@ -442,31 +440,32 @@ assignGeneIdsByReference <- function(grl, annotations, min.exonOverlap = 10, uniqueHits <- which(queryHits(ov) %in% which(countQueryHits(ov)==1)) geneIds[queryHits(ov)[uniqueHits]] <- names(geneRanges)[subjectHits(ov)[uniqueHits]] - if(length(ov)>0){ - ## next for non unique hits select one gene (maximum overlap) - multiHits <- which(queryHits(ov) %in% which(countQueryHits(ov)>1)) - rangeIntersect= intersect(ranges(grl[queryHits(ov)[multiHits]]), - ranges(geneRanges[subjectHits(ov)[multiHits]])) - filteredMultiHits = data.frame(queryHits = queryHits(ov)[multiHits], - intersectWidth = sum(width(rangeIntersect)), - subjectHits = subjectHits(ov)[multiHits]) %>% - group_by(queryHits) %>% summarise(subjectHits = subjectHits[which.max(intersectWidth)], - intersectWidth = max(intersectWidth)) - if(fusionMode) { - filteredMultiHits <- filteredMultiHits %>% - filter(intersectWidth>min.exonOverlap) %>% - mutate(geneid = names(geneRanges)[subjectHits]) %>% distinct() %>% - group_by(queryHits) %>% summarise(geneid = paste(geneid, collapse=':')) - geneIds[filteredMultiHits$queryHits] <- filteredMultiHits$geneid - - } else { - filteredMultiHits <- filteredMultiHits %>% - group_by(queryHits) %>% arrange(desc(intersectWidth)) %>% - dplyr::slice(1) - geneIds[filteredMultiHits$queryHits] <- - names(geneRanges)[filteredMultiHits$subjectHits] - } - } + + ## next for non unique hits select one gene (maximum overlap) + multiHits <- which(queryHits(ov) %in% which(countQueryHits(ov)>1)) + expandedRanges <- expandRangesList(ranges(grl[queryHits(ov)[multiHits]]), + ranges(geneRanges[subjectHits(ov)[multiHits]])) + rangeIntersect <- pintersect(expandedRanges, + mcols(expandedRanges)$matchRng, resolve.empty = 'start.x') + intersectById <- tapply(width(rangeIntersect), + mcols(expandedRanges)$IdMap, sum) + + filteredMultiHits <- as_tibble(ov[multiHits]) %>% + mutate(intersectWidth = intersectById) + if(fusionMode) { + filteredMultiHits <- filteredMultiHits %>% + filter(intersectWidth>min.exonOverlap) %>% + mutate(geneid = names(geneRanges)[subjectHits]) %>% distinct() %>% + group_by(queryHits) %>% summarise(geneid = paste(geneid, collapse=':')) + geneIds[filteredMultiHits$queryHits] <- filteredMultiHits$geneid + + } else { + filteredMultiHits <- filteredMultiHits %>% + group_by(queryHits) %>% arrange(desc(intersectWidth)) %>% + dplyr::slice(1) + geneIds[filteredMultiHits$queryHits] <- + names(geneRanges)[filteredMultiHits$subjectHits] + } return(geneIds) } diff --git a/R/bambu-quantify.R b/R/bambu-quantify.R index fa5a079d..6f0f9583 100644 --- a/R/bambu-quantify.R +++ b/R/bambu-quantify.R @@ -4,47 +4,82 @@ #' @noRd bambu.quantify <- function(readClass, annotations, emParameters, trackReads = FALSE, returnDistTable = FALSE, - verbose = FALSE, isoreParameters = setIsoreParameters(NULL)) { - min.exonDistance = isoreParameters[["min.exonDistance"]] - min.primarySecondaryDist = - isoreParameters[['min.primarySecondaryDist']] - min.primarySecondaryDistStartEnd = - isoreParameters[['min.primarySecondaryDistStartEnd2']] - if (is.character(readClass)) readClass <- readRDS(file = readClass) - readClassDist <- isore.estimateDistanceToAnnotations(readClass, annotations, - min.exonDistance = min.exonDistance, - min.primarySecondaryDist = min.primarySecondaryDist, - min.primarySecondaryDistStartEnd = min.primarySecondaryDistStartEnd, - verbose = verbose) - metadata(readClassDist)$distTable <- modifyIncompatibleAssignment(metadata(readClassDist)$distTable) - incompatibleCounts <- processIncompatibleCounts(readClassDist) - readClassDt <- genEquiRCs(readClassDist, annotations, verbose) - compatibleCounts <- bambu.quantDT(readClassDt, emParameters = emParameters,verbose = verbose) - incompatibleCounts <- incompatibleCounts[data.table(GENEID = unique(mcols(annotations)$GENEID)), on = "GENEID"] - incompatibleCounts[is.na(counts), counts := 0] - compatibleCounts <- calculateCPM(compatibleCounts, incompatibleCounts) - setnames(incompatibleCounts, "counts", colnames(readClass)) - counts <- compatibleCounts[match(mcols(annotations)$txid, txid)] - colNameRC <- colnames(readClass) - colDataRC <- colData(readClass) - sig.digit <- emParameters[["sig.digit"]] - seOutput <- SummarizedExperiment( - assays = SimpleList(counts = matrix(round(counts$counts,sig.digit), ncol = 1, - dimnames = list(NULL, colNameRC)), CPM = matrix(round(counts$CPM,sig.digit), - ncol = 1, dimnames = list(NULL, colNameRC)), - fullLengthCounts = matrix(round(counts$fullLengthCounts,sig.digit), ncol = 1, - dimnames = list(NULL, colNameRC)), - uniqueCounts = matrix(counts$uniqueCounts, - ncol = 1, dimnames = list(NULL, colNameRC))), colData = colDataRC) - metadata(seOutput)$incompatibleCounts = incompatibleCounts - if (returnDistTable) metadata(seOutput)$distTable = metadata(readClassDist)$distTable - if (trackReads) metadata(seOutput)$readToTranscriptMap = - generateReadToTranscriptMap(readClass, metadata(readClassDist)$distTable, - annotations) - return(seOutput) -} - + verbose = FALSE, readGrgListFile = NULL, + isoreParameters = setIsoreParameters(NULL)) { + min.exonDistance = isoreParameters[["min.exonDistance"]] + min.primarySecondaryDist = + isoreParameters[['min.primarySecondaryDist']] + min.primarySecondaryDistStartEnd = + isoreParameters[['min.primarySecondaryDistStartEnd2']] + if (is.character(readClass)) readClass <- readRDS(file = readClass) + readClassDist <- isore.estimateDistanceToAnnotations(readClass, annotations, + min.exonDistance = min.exonDistance, + min.primarySecondaryDist = min.primarySecondaryDist, + min.primarySecondaryDistStartEnd = min.primarySecondaryDistStartEnd, + verbose = verbose) + metadata(readClassDist)$distTable <- modifyIncompatibleAssignment(metadata(readClassDist)$distTable) + incompatibleCounts <- processIncompatibleCounts(readClassDist) + readClassDt <- genEquiRCs(readClassDist, annotations, verbose) + compatibleCounts <- bambu.quantDT(readClassDt, emParameters = emParameters,verbose = verbose) + + ### add ### + rm(readClassDt) + ### add ### + + incompatibleCounts <- incompatibleCounts[data.table(GENEID = unique(mcols(annotations)$GENEID)), on = "GENEID"] + incompatibleCounts[is.na(counts), counts := 0] + compatibleCounts <- calculateCPM(compatibleCounts, incompatibleCounts) + setnames(incompatibleCounts, "counts", colnames(readClass)) + counts <- compatibleCounts[match(mcols(annotations)$txid, txid)] + + ### add ### + rm(compatibleCounts) + ### add ### + + colNameRC <- colnames(readClass) + colDataRC <- colData(readClass) + sig.digit <- emParameters[["sig.digit"]] + seOutput <- SummarizedExperiment( + assays = SimpleList(counts = matrix(round(counts$counts,sig.digit), ncol = 1, + dimnames = list(NULL, colNameRC)), + CPM = matrix(round(counts$CPM,sig.digit), ncol = 1, dimnames = list(NULL, colNameRC)), + fullLengthCounts = matrix(round(counts$fullLengthCounts,sig.digit), ncol = 1, + dimnames = list(NULL, colNameRC)), + uniqueCounts = matrix(counts$uniqueCounts, + ncol = 1, dimnames = list(NULL, colNameRC))), colData = colDataRC) + + ### add ### + rm(counts) + ### add ### + + metadata(seOutput)$incompatibleCounts = incompatibleCounts + + ### add ### + rm(incompatibleCounts) + ### add ### + + if (returnDistTable) metadata(seOutput)$distTable = metadata(readClassDist)$distTable + if (trackReads) metadata(seOutput)$readToTranscriptMap = + generateReadToTranscriptMap(readClass, metadata(readClassDist)$distTable, + annotations) + + ### add ### + rm(readClassDist) + ### add ### + + ### add ### + if (!is.null(readGrgListFile)){ + seOutput <- list(incompatibleCounts = as(metadata(seOutput)$incompatibleCounts[[colnames(seOutput)]], "sparseVector"), + counts = as(assays(seOutput)$counts, "sparseVector"), + CPM = as(assays(seOutput)$CPM, "sparseVector"), + fullLengthCounts = as(assays(seOutput)$fullLengthCounts, "sparseVector"), + uniqueCounts = as(assays(seOutput)$uniqueCounts, "sparseVector"), + colnames = colnames(seOutput), colData = colData(seOutput)) + } + ### add ### + return(seOutput) +} #' Process data.table object #' @param readClassDt A data.table object @@ -53,24 +88,24 @@ bambu.quantify <- function(readClass, annotations, emParameters, bambu.quantDT <- function(readClassDt = readClassDt, emParameters = list(degradationBias = TRUE, maxiter = 10000, conv = 10^(-2), minvalue = 10^(-8)), ncore = 1, verbose = FALSE) { - rcPreOut <- addAval(readClassDt, emParameters, verbose) - readClassDt <- rcPreOut[[1]] - outIni <- initialiseOutput(readClassDt) - readClassDt <- filterTxRc(readClassDt) - readClassDt <- assignGroups(readClassDt) - inputRcDt <- getInputList(readClassDt) - readClassDt <- split(readClassDt, by = "gene_grp_id") - start.ptm <- proc.time() - outEst <- abundance_quantification(inputRcDt, readClassDt, - maxiter = emParameters[["maxiter"]], - conv = emParameters[["conv"]], minvalue = emParameters[["minvalue"]]) - end.ptm <- proc.time() - if (verbose) message("Finished EM estimation in ", - round((end.ptm - start.ptm)[3] / 60, 1), " mins.") - outEst <- modifyQuantOut(outEst,outIni) - theta_est <- rbind(rcPreOut[[2]],outEst) - theta_est <- removeDuplicates(theta_est) - return(theta_est) + rcPreOut <- addAval(readClassDt, emParameters, verbose) + readClassDt <- rcPreOut[[1]] + outIni <- initialiseOutput(readClassDt) + readClassDt <- filterTxRc(readClassDt) + readClassDt <- assignGroups(readClassDt) + inputRcDt <- getInputList(readClassDt) + readClassDt <- split(readClassDt, by = "gene_grp_id") + start.ptm <- proc.time() + outEst <- abundance_quantification(inputRcDt, readClassDt, + maxiter = emParameters[["maxiter"]], + conv = emParameters[["conv"]], minvalue = emParameters[["minvalue"]]) + end.ptm <- proc.time() + if (verbose) message("Finished EM estimation in ", + round((end.ptm - start.ptm)[3] / 60, 1), " mins.") + outEst <- modifyQuantOut(outEst,outIni) + theta_est <- rbind(rcPreOut[[2]],outEst) + theta_est <- removeDuplicates(theta_est) + return(theta_est) } diff --git a/R/bambu.R b/R/bambu.R index e61d0bfa..dcc12228 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -136,64 +136,143 @@ #' genome = fa.file, discovery = TRUE, quant = TRUE) #' @export bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, - opt.discovery = NULL, opt.em = NULL, rcOutDir = NULL, discovery = TRUE, - quant = TRUE, stranded = FALSE, ncore = 1, yieldSize = NULL, - trackReads = FALSE, returnDistTable = FALSE, lowMemory = FALSE, - fusionMode = FALSE, verbose = FALSE) { - if(is.null(annotations)) { annotations = GRangesList() - } else annotations <- checkInputs(annotations, reads, - readClass.outputDir = rcOutDir, genomeSequence = genome) - isoreParameters <- setIsoreParameters(isoreParameters = opt.discovery) - #below line is to be compatible with earlier version of running bambu - if(!is.null(isoreParameters$max.txNDR)) NDR = isoreParameters$max.txNDR + opt.discovery = NULL, opt.em = NULL, rcOutDir = NULL, discovery = TRUE, + quant = TRUE, stranded = FALSE, ncore = 1, yieldSize = NULL, + trackReads = FALSE, returnDistTable = FALSE, lowMemory = FALSE, + fusionMode = FALSE, verbose = FALSE, demultiplexed = FALSE, readGrgListFile = NULL) { + + ### add ### + library(Matrix) + + if(demultiplexed == TRUE) {trackReads = TRUE; lowMemory = TRUE} + ### add ### + + if(is.null(annotations)) { annotations = GRangesList() + } else annotations <- checkInputs(annotations, reads, + readClass.outputDir = rcOutDir, genomeSequence = genome) + isoreParameters <- setIsoreParameters(isoreParameters = opt.discovery) + #below line is to be compatible with earlier version of running bambu + if(!is.null(isoreParameters$max.txNDR)) NDR = isoreParameters$max.txNDR + + emParameters <- setEmParameters(emParameters = opt.em) + + ### add ### + if (is.null(readGrgListFile)){ + bpParameters <- setBiocParallelParameters(reads, ncore, verbose) - emParameters <- setEmParameters(emParameters = opt.em) - bpParameters <- setBiocParallelParameters(reads, ncore, verbose) - - rm.readClassSe <- FALSE - readClassList = reads - isRDSs = all(sapply(reads, class)=="RangedSummarizedExperiment") - isBamFiles = !isRDSs - if(!isRDSs) isBamFiles = ifelse(!is(reads, "BamFileList"), all(grepl(".bam$", reads)), FALSE) - if (isBamFiles | is(reads, "BamFileList")) { - if (length(reads) > 10 & (is.null(rcOutDir))) { - rcOutDir <- tempdir() #>=10 samples, save to temp folder - message("There are more than 10 samples, read class files + } else{ + bpParameters <- setBiocParallelParameters(readGrgListFile, ncore, verbose) + } + ### add ### + + rm.readClassSe <- FALSE + readClassList = reads + isRDSs = all(sapply(reads, class)=="RangedSummarizedExperiment") + isBamFiles = !isRDSs + if(!isRDSs) isBamFiles = ifelse(!is(reads, "BamFileList"), all(grepl(".bam$", reads)), FALSE) + if (isBamFiles | is(reads, "BamFileList")) { + if (length(reads) > 10 & (is.null(rcOutDir))) { + rcOutDir <- tempdir() #>=10 samples, save to temp folder + message("There are more than 10 samples, read class files will be temporarily saved to ", rcOutDir, - " for more efficient processing") - rm.readClassSe <- TRUE # remove temporary read class files - } - message("--- Start generating read class files ---") - readClassList <- bambu.processReads(reads, annotations, - genomeSequence = genome, - readClass.outputDir = rcOutDir, yieldSize, - bpParameters, stranded, verbose, - isoreParameters, trackReads = trackReads, fusionMode = fusionMode, - lowMemory = lowMemory) - } - warnings = handleWarnings(readClassList, verbose) - if (!discovery & !quant) return(readClassList) - if (discovery) { - message("--- Start extending annotations ---") - annotations <- bambu.extendAnnotations(readClassList, annotations, NDR, - isoreParameters, stranded, bpParameters, fusionMode, verbose) - metadata(annotations)$warnings = warnings - if (!quant) return(annotations) + " for more efficient processing") + rm.readClassSe <- TRUE # remove temporary read class files } - if (quant) { - message("--- Start isoform quantification ---") - if(length(annotations)==0) stop("No valid annotations, if running + message("--- Start generating read class files ---") + + readClassList <- bambu.processReads(reads, annotations, + genomeSequence = genome, + readClass.outputDir = rcOutDir, yieldSize = yieldSize, + bpParameters, stranded, verbose, + isoreParameters, trackReads = trackReads, fusionMode = fusionMode, + lowMemory = lowMemory, demultiplexed = demultiplexed, readGrgListFile = readGrgListFile) + } + if (is.null(readGrgListFile)) warnings = handleWarnings(readClassList, verbose) + if (!discovery & !quant) return(readClassList) + if (discovery) { + message("--- Start extending annotations ---") + annotations <- bambu.extendAnnotations(readClassList, annotations, NDR, + isoreParameters, stranded, bpParameters, fusionMode, verbose) + metadata(annotations)$warnings = warnings + + if (!quant) return(annotations) + } + + if (quant) { + + message("--- Start isoform quantification ---") + if(length(annotations)==0) stop("No valid annotations, if running de novo please try less stringent parameters") - countsSe <- bplapply(readClassList, bambu.quantify, - annotations = annotations, isoreParameters = isoreParameters, - emParameters = emParameters, trackReads = trackReads, - returnDistTable = returnDistTable, verbose = verbose, - BPPARAM = bpParameters) - countsSe <- combineCountSes(countsSe, trackReads, returnDistTable) - rowRanges(countsSe) <- annotations - metadata(countsSe)$warnings = warnings - if (rm.readClassSe) file.remove(unlist(readClassList)) - message("--- Finished running Bambu ---") - return(countsSe) + + ### add ### + if (!is.null(readGrgListFile)){ + + library(BiocFileCache) # temporary + bfc <- BiocFileCache(rcOutDir, ask = FALSE) + info <- bfcinfo(bfc) + + countsSeCompressed <- bplapply(info$rpath, bambu.quantify, + annotations = annotations, isoreParameters = isoreParameters, + emParameters = emParameters, trackReads = trackReads, + returnDistTable = returnDistTable, verbose = verbose, + readGrgListFile = readGrgListFile, + BPPARAM = bpParameters) + + ### countsData + countsData <- c("incompatibleCounts", "counts", "CPM", "fullLengthCounts", "uniqueCounts") + countsDataMat <- list() + + for (k in seq_along(countsData)){ + countsVecList <- lapply(seq_along(countsSeCompressed), function(j){countsSeCompressed[[j]][[countsData[k]]]}) + + countsMat <- sparseMatrix(i = unlist(lapply(seq_along(countsVecList), function(j){countsVecList[[j]]@i})), + j = unlist(lapply(seq_along(countsVecList), function(j){rep(j, length(countsVecList[[j]]@i))})), + x = unlist(lapply(seq_along(countsVecList), function(j){countsVecList[[j]]@x})), + dims = c(length(countsVecList[[1]]), length(countsVecList))) + + colnames(countsMat) <- unlist(lapply(seq_along(countsSeCompressed), function(j){countsSeCompressed[[j]]$colnames})) + + if (countsData[k] == "incompatibleCounts"){ + countsMat <- data.table(as.data.frame(as.matrix(countsMat)) %>% + mutate(GENEID = unique(mcols(annotations)$GENEID)) %>% + select(GENEID, everything())) + } + + countsDataMat[[countsData[k]]] <- countsMat + } + + countsSe <- SummarizedExperiment(assays = SimpleList(counts = countsDataMat$counts, + CPM = countsDataMat$CPM, + fullLengthCounts = countsDataMat$fullLengthCounts, + uniqueCounts = countsDataMat$uniqueCounts), + colData = as(bind_rows(lapply(lapply(seq_along(countsSeCompressed), + function(j){countsSeCompressed[[j]]$colData}), as.data.frame)), "DataFrame")) + + metadata(countsSe)$incompatibleCounts <- countsDataMat$incompatibleCounts + rowRanges(countsSe) <- annotations + metadata(countsSe)$warnings = warnings + + } else { + ### add ### + countsSe <- bplapply(readClassList, bambu.quantify, + annotations = annotations, isoreParameters = isoreParameters, + emParameters = emParameters, trackReads = trackReads, + returnDistTable = returnDistTable, verbose = verbose, + readGrgListFile = readGrgListFile, + BPPARAM = bpParameters) + + countsSe <- combineCountSes(countsSe, trackReads, returnDistTable) + rowRanges(countsSe) <- annotations + metadata(countsSe)$warnings = warnings } -} \ No newline at end of file + + ### add ### + #if (!is.null(readGrgListFile)) unlink(unique(dirname(readGrgListFile)), recursive = TRUE) + ### add ### + + #if (rm.readClassSe) file.remove(unlist(readClassList)) + message("--- Finished running Bambu ---") + + return(countsSe) + } +} diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index 8d8b98d1..be588acf 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -184,27 +184,24 @@ handleWarnings <- function(readClassList, verbose){ sampleNames = c() for(i in seq_along(readClassList)){ readClassSe = readClassList[[i]] - if (is.character(readClassSe)){ - readClassSe <- readRDS(file = readClassSe)} - warnings[[i]] = NA - if(!is.null(metadata(readClassSe)$warnings)){ - warnings[[i]] = metadata(readClassSe)$warnings} + if (is.character(readClassSe)) + readClassSe <- readRDS(file = readClassSe) + warnings[[i]] = metadata(readClassSe)$warnings sampleNames = c(sampleNames, colnames(readClassList[[i]])) } names(warnings) = sampleNames - if(verbose & any(!is.na(warnings))){ + if(verbose & any(lengths(warnings)>0)){ message("--- per sample warnings during read class construction ---") - warnings.tmp = warnings[!is.na(warnings)] - for(i in seq_along(warnings.tmp)){ - message("Warnings for: ", names(warnings.tmp)[i]) - sapply(warnings.tmp[[i]], message) + for(i in seq_along(warnings)){ + if(lengths(warnings)[i]>0){ + message("Warnings for: ", sampleNames[i]) + sapply(warnings[[i]], message) + } } } else { - warningCount = sum(lengths(warnings[!is.na(warnings)])) - if(warningCount > 0){ - message("Detected ", warningCount, " warnings across the samples during ", - "read class construction. Access warnings with metadata(bambuOutput)$warnings")} + message("Detected ", sum(lengths(warnings)), " warnings across the samples during ", + "read class construction. Access warnings with metadata(bambuOutput)$warnings") } return(warnings) } diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index 09cf5ae7..d595d6f1 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -7,7 +7,7 @@ #' @importFrom GenomicAlignments grglist readGAlignments #' @importFrom GenomicRanges width #' @noRd -prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, use.names = FALSE) { +prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, use.names = FALSE, demultiplexed = NULL) { if (is(bamFile, "BamFile")) { if (!is.null(yieldSize)) { yieldSize(bamFile) <- yieldSize @@ -25,15 +25,34 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, use.n bf <- open(bamFile) readGrgList <- list() counter <- 1 + cells <- c() + umi <- c() + while (isIncomplete(bf)) { readGrgList[[counter]] <- grglist(readGAlignments(bf, param = ScanBamParam(flag = scanBamFlag(isSecondaryAlignment = FALSE)), use.names = use.names)) + + ### add ### + if (isTRUE(demultiplexed)){ + mcols(readGrgList[[counter]])$CB <- substr(names(readGrgList[[counter]]), 1, 16) + mcols(readGrgList[[counter]])$UMI <- substr(names(readGrgList[[counter]]), 18, 29) + names(readGrgList[[counter]]) <- NULL + cells <- unique(c(cells, mcols(readGrgList[[counter]])$CB)) + mcols(readGrgList[[counter]])$CB <- factor(mcols(readGrgList[[counter]])$CB, levels = cells) + + umi <- unique(c(umi, mcols(readGrgList[[counter]])$UMI)) + mcols(readGrgList[[counter]])$UMI <- factor(mcols(readGrgList[[counter]])$UMI, levels = umi) + } + ### add ### + counter <- counter + 1 } on.exit(close(bf)) + rm(cells) + rm(umi) if (length(readGrgList) > 1) { readGrgList <- do.call(c, readGrgList) } else { @@ -41,7 +60,7 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, use.n } # remove microexons of width 1bp from list readGrgList <- readGrgList[width(readGrgList) > 1] - mcols(readGrgList)$id <- seq_along(readGrgList) + return(readGrgList) } diff --git a/R/readWrite.R b/R/readWrite.R index 44e98de9..b317267d 100644 --- a/R/readWrite.R +++ b/R/readWrite.R @@ -35,9 +35,20 @@ writeBambuOutput <- function(se, path, prefix = "") { writeCountsOutput(se, varname=d, feature='transcript',outdir, prefix) } - seGene <- transcriptToGeneExpression(se) - writeCountsOutput(seGene, varname='counts', - feature='gene',outdir, prefix) + + seGene <- transcriptToGeneExpression(se[,1]) + + for (i in seq(ceiling(length(colnames(se)) / 100))){ + if (i == ceiling(length(colnames(se)) / 100)){ + seGene <- cbind(seGene, transcriptToGeneExpression(se[,(100*i-99):length(colnames(se))])) + } else{ + seGene <- cbind(seGene, transcriptToGeneExpression(se[,(100*i-99):(100*i)])) + } + } + + seGene <- seGene[,-1] + + writeCountsOutput(seGene, varname='counts', feature='gene',outdir, prefix) } } @@ -46,19 +57,36 @@ writeBambuOutput <- function(se, path, prefix = "") { #' @noRd writeCountsOutput <- function(se, varname = "counts", feature = "transcript", outdir, prefix){ - estimates <- data.table(as.data.frame(assays(se)[[varname]]), - keep.rownames = TRUE) - if(feature == "transcript"){ + + estimatesfn <- paste(outdir, prefix, varname,"_",feature,".txt", sep = "") + if(!is(assays(se)[[varname]], "sparseMatrix")){ + estimates <- data.table(as.data.frame(assays(se)[[varname]]), + keep.rownames = TRUE) + if(feature == "transcript"){ setnames(estimates, "rn", "TXNAME") geneIDs <- data.table(as.data.frame(rowData(se))[,c("TXNAME","GENEID")]) estimates <- geneIDs[estimates, on = "TXNAME"] - }else{ + }else{ setnames(estimates, "rn","GENEID") + } + + utils::write.table(estimates, file = estimatesfn, sep = "\t", quote = FALSE, row.names = FALSE) + + } else{ + estimates <- assays(se)[[varname]] + if (feature == "transcript"){ + Matrix::writeMM(estimates, estimatesfn) + geneIDs <- data.table(as.data.frame(rowData(se))[,c("TXNAME","GENEID")]) + utils::write.table(geneIDs, file = paste0(outdir, "txANDgenes.txt"), + sep = "\t", quote = FALSE, row.names = FALSE, col.names = FALSE) + utils::write.table(colnames(se), file = paste0(outdir, "barcodes.txt"), quote = FALSE, row.names = FALSE, col.names = FALSE) + + } else{ + Matrix::writeMM(estimates, estimatesfn) + utils::write.table(names(se), file = paste0(outdir, "genes.txt"), + sep = "\t", quote = FALSE, row.names = FALSE, col.names = FALSE) + } } - estimatesfn <- paste(outdir, prefix, - varname,"_",feature,".txt", sep = "") - utils::write.table(estimates, file = estimatesfn, - sep = "\t", quote = FALSE, row.names = FALSE) } #' Write annotation GRangesList into a GTF file diff --git a/R/transcriptToGeneExpression.R b/R/transcriptToGeneExpression.R index 9cf7604b..b145a2ac 100644 --- a/R/transcriptToGeneExpression.R +++ b/R/transcriptToGeneExpression.R @@ -11,7 +11,7 @@ #' )) #' transcriptToGeneExpression(se) transcriptToGeneExpression <- function(se) { - counts <- as.data.table(assays(se)$counts, keep.rownames = TRUE) + counts <- as.data.table(as.matrix(assays(se)$counts), keep.rownames = TRUE) runnames <- colnames(counts)[-1] colnames(counts)[-1] <- rename_duplicatedNames(runnames) colData(se)@rownames <- rename_duplicatedNames(colData(se)@rownames) @@ -63,5 +63,11 @@ transcriptToGeneExpression <- function(se) { dimnames = list(RowNames, ColNames))), rowRanges = exByGene[RowNames], colData = ColData) + + if(is(assays(se)$counts, "sparseMatrix")) { + assays(seOutput)$counts <- as(assays(seOutput)$counts, "sparseMatrix") + assays(seOutput)$CPM <- as(assays(seOutput)$CPM, "sparseMatrix") + } + return(seOutput) } \ No newline at end of file From 245661774189b14dfd4b61b9ee2a610ac12e1738 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 3 Oct 2023 13:24:14 +0800 Subject: [PATCH 048/189] bug fix the merge --- R/bambu-processReads.R | 38 +++++++--------------- R/bambu.R | 72 +++++++++++++++++------------------------- 2 files changed, 41 insertions(+), 69 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index be2244ce..17a46dad 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -52,7 +52,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, stranded = stranded, min.readCount = min.readCount, fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, - lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode, index = i, rgrLists = rgrLists)}, + lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode, demultiplexed = FALSE, index = i)}, BPPARAM = bpParameters) readGrgList = do.call(c, readGrgList) mcols(readGrgList)$id <- seq_along(readGrgList) @@ -65,7 +65,6 @@ bambu.processReads <- function(reads, annotations, genomeSequence, lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode) metadata(readClassList)$samples = names(reads) countMatrix = splitReadClassFiles(readClassList) - colnames(countMatrix) = metadata(readClassList)$samples rownames(countMatrix) = rownames(readClassList) metadata(readClassList)$countMatrix = countMatrix @@ -106,14 +105,9 @@ bambu.processReads <- function(reads, annotations, genomeSequence, bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, readClass.outputDir = NULL, yieldSize = NULL, stranded = FALSE, min.readCount = 2, fitReadClassModel = TRUE, min.exonOverlap = 10, defaultModels = NULL, returnModel = FALSE, - verbose = FALSE, lowMemory = FALSE, trackReads = FALSE, fusionMode = FALSE, index = 0, rgrLists = FALSE) { - #if(verbose) message(names(bam.file)[1]) - if(rgrLists){ - print(bam.file) - readGrgList <- readRDS(bam.file) - } else{ - readGrgList <- prepareDataFromBam(bam.file[[1]], verbose = verbose, use.names = trackReads) - } + verbose = FALSE, lowMemory = FALSE, trackReads = FALSE, fusionMode = FALSE, demultiplexed = FALSE, index = 0) { + + readGrgList <- prepareDataFromBam(bam.file[[1]], verbose = verbose, use.names = trackReads, demultiplexed) warnings = c() warnings = seqlevelCheckReadsAnnotation(readGrgList, annotations) @@ -167,23 +161,15 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, if (isTRUE(demultiplexed)){ cellBarcodeAssign <- tibble(index = mcols(readGrgList)$id, CB = mcols(readGrgList)$CB) %>% nest(.by = "CB") - if (!dir.exists("CB")){ - dir.create("CB") - } else{ - unlink(paste("CB", "*", sep = "/")) - } + # if (!dir.exists("CB")){ + # dir.create("CB") + # } else{ + # unlink(paste("CB", "*", sep = "/")) + # } - invisible(lapply(seq(nrow(cellBarcodeAssign)), - function(x){saveRDS(readGrgList[pull(cellBarcodeAssign$data[[x]])], paste0("CB/", cellBarcodeAssign$CB[[x]],".rds"))})) - } - ## add ### - - ### add ### - } else { - - readGrgList <- readRDS(bam.file[[1]]) - - } + # invisible(lapply(seq(nrow(cellBarcodeAssign)), + # function(x){saveRDS(readGrgList[pull(cellBarcodeAssign$data[[x]])], paste0("CB/", cellBarcodeAssign$CB[[x]],".rds"))})) + } return(readGrgList) } diff --git a/R/bambu.R b/R/bambu.R index c2a02376..ca11c399 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -139,7 +139,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, opt.discovery = NULL, opt.em = NULL, rcOutDir = NULL, discovery = TRUE, quant = TRUE, stranded = FALSE, ncore = 1, yieldSize = NULL, trackReads = FALSE, returnDistTable = FALSE, lowMemory = FALSE, - fusionMode = FALSE, verbose = FALSE, rgrLists = FALSE) { + fusionMode = FALSE, verbose = FALSE, demultiplexed = FALSE) { if(is.null(annotations)) { annotations = GRangesList() } else annotations <- checkInputs(annotations, reads, readClass.outputDir = rcOutDir, genomeSequence = genome) @@ -155,7 +155,6 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, isRDSs = all(sapply(reads, class)=="RangedSummarizedExperiment") isBamFiles = !isRDSs if(!isRDSs) isBamFiles = ifelse(!is(reads, "BamFileList"), all(grepl(".bam$", reads)), FALSE) - #if(rgrLists){ if (isBamFiles | is(reads, "BamFileList")) { if (length(reads) > 10 & (is.null(rcOutDir))) { rcOutDir <- tempdir() #>=10 samples, save to temp folder @@ -170,31 +169,14 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, readClass.outputDir = rcOutDir, yieldSize, bpParameters, stranded, verbose, isoreParameters, trackReads = trackReads, fusionMode = fusionMode, - lowMemory = lowMemory, rgrLists = rgrLists) + lowMemory = lowMemory, demultiplexed = FALSE) } - #warnings = handleWarnings(readClassList, verbose) - if (!discovery & !quant) return(readClassList) - if (discovery) { - message("--- Start extending annotations ---") - annotations <- bambu.extendAnnotations(readClassList, annotations, NDR, - isoreParameters, stranded, bpParameters, fusionMode, verbose) - metadata(annotations)$warnings = warnings - if (!quant) return(annotations) - } - message("--- Start generating read class files ---") - - readClassList <- bambu.processReads(reads, annotations, - genomeSequence = genome, - readClass.outputDir = rcOutDir, yieldSize = yieldSize, - bpParameters, stranded, verbose, - isoreParameters, trackReads = trackReads, fusionMode = fusionMode, - lowMemory = lowMemory, demultiplexed = demultiplexed, readGrgListFile = readGrgListFile) - } - if (is.null(readGrgListFile)) warnings = handleWarnings(readClassList, verbose) + + #warnings = handleWarnings(readClassList, verbose) if (!discovery & !quant) return(readClassList) if (discovery) { message("--- Start extending annotations ---") - annotations <- bambu.extendAnnotations(readClassList, annotations, NDR, + annotations <- bambu.extendAnnotations(list(readClassList), annotations, NDR, isoreParameters, stranded, bpParameters, fusionMode, verbose) metadata(annotations)$warnings = warnings @@ -216,34 +198,36 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, verbose = verbose) metadata(readClassDist)$distTable <- modifyIncompatibleAssignment(metadata(readClassDist)$distTable) metadata(readClassDist)$distTable <- genEquiRCsBasedOnObservedReads(readClassDist) - countMatrix2 = metadata(readClassList)$countMatrix[metadata(readClassDist)$distTable$readClassId,] + countMatrix2 = as.matrix(metadata(readClassList)$countMatrix[metadata(readClassDist)$distTable$readClassId,]) + colnames(countMatrix2) = colnames(metadata(readClassList)$countMatrix) readClassDt <- genEquiRCs(readClassDist, annotations, verbose) - countsSe <- bplapply(seq_len(ncol(countMatrix2)), bambu.quantify, - readClassDist = readClassDist, readClassDt = readClassDt, countMatrix = countMatrix2, - annotations = annotations, isoreParameters = isoreParameters, - emParameters = emParameters, trackReads = trackReads, - returnDistTable = returnDistTable, verbose = verbose, - BPPARAM = bpParameters) - countsSe <- combineCountSes(countsSe) - rowRanges(countsSe) <- annotations - #metadata(countsSe)$warnings = warnings - if (trackReads) metadata(seOutput)$readToTranscriptMap = - generateReadToTranscriptMap(readClass, metadata(readClassDist)$distTable, - annotations) - if (returnDistTable) metadata(seOutput)$distTable = metadata(readClassDist)$distTable - if (rm.readClassSe) file.remove(unlist(readClassList)) - message("--- Finished running Bambu ---") - return(countsSe) + # countsSe <- bplapply(seq_len(ncol(countMatrix2)), bambu.quantify, + # readClassDist = readClassDist, readClassDt = readClassDt, countMatrix = countMatrix2, + # annotations = annotations, isoreParameters = isoreParameters, + # emParameters = emParameters, trackReads = trackReads, + # returnDistTable = returnDistTable, verbose = verbose, + # BPPARAM = bpParameters) + # countsSe <- combineCountSes(countsSe) + # rowRanges(countsSe) <- annotations + # #metadata(countsSe)$warnings = warnings + # if (trackReads) metadata(seOutput)$readToTranscriptMap = + # generateReadToTranscriptMap(readClass, metadata(readClassDist)$distTable, + # annotations) + # if (returnDistTable) metadata(seOutput)$distTable = metadata(readClassDist)$distTable + # if (rm.readClassSe) file.remove(unlist(readClassList)) + # message("--- Finished running Bambu ---") + # return(countsSe) ###MESSYFOREST sparsematrix - countsSeCompressed <- bplapply(info$rpath, bambu.quantify, + countsSeCompressed <- bplapply(seq_len(ncol(countMatrix2)), bambu.quantify, + readClassDist = readClassDist, readClassDt = readClassDt, countMatrix = countMatrix2, annotations = annotations, isoreParameters = isoreParameters, emParameters = emParameters, trackReads = trackReads, returnDistTable = returnDistTable, verbose = verbose, - readGrgListFile = readGrgListFile, BPPARAM = bpParameters) + print("bambu.quantify finished") ### countsData countsData <- c("incompatibleCounts", "counts", "CPM", "fullLengthCounts", "uniqueCounts") @@ -277,6 +261,8 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, metadata(countsSe)$incompatibleCounts <- countsDataMat$incompatibleCounts rowRanges(countsSe) <- annotations - metadata(countsSe)$warnings = warnings + #metadata(countsSe)$warnings = warnings + + return(countsSe) } } From fc19125e7403b2e7255dfbca3bba77fde08fc8f2 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 3 Oct 2023 15:01:01 +0800 Subject: [PATCH 049/189] Clean up combining SEs --- R/bambu.R | 98 ++++++++++---------------------------- R/bambu_utilityFunctions.R | 34 +++++++++---- 2 files changed, 50 insertions(+), 82 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index ca11c399..ba6ac719 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -173,21 +173,21 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, } #warnings = handleWarnings(readClassList, verbose) - if (!discovery & !quant) return(readClassList) - if (discovery) { - message("--- Start extending annotations ---") - annotations <- bambu.extendAnnotations(list(readClassList), annotations, NDR, - isoreParameters, stranded, bpParameters, fusionMode, verbose) - metadata(annotations)$warnings = warnings - - if (!quant) return(annotations) - } + if (!discovery & !quant) return(readClassList) + if (discovery) { + message("--- Start extending annotations ---") + annotations <- bambu.extendAnnotations(list(readClassList), annotations, NDR, + isoreParameters, stranded, bpParameters, fusionMode, verbose) + metadata(annotations)$warnings = warnings + + if (!quant) return(annotations) + } - if (quant) { + if (quant) { - message("--- Start isoform quantification ---") - if(length(annotations)==0) stop("No valid annotations, if running - de novo please try less stringent parameters") + message("--- Start isoform quantification ---") + if(length(annotations)==0) stop("No valid annotations, if running + de novo please try less stringent parameters") if (is.character(readClassList)) readClassList <- readRDS(file = readClassList) if(is.list(readClassList)) readClassList = readClassList[[1]] @@ -201,68 +201,20 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, countMatrix2 = as.matrix(metadata(readClassList)$countMatrix[metadata(readClassDist)$distTable$readClassId,]) colnames(countMatrix2) = colnames(metadata(readClassList)$countMatrix) readClassDt <- genEquiRCs(readClassDist, annotations, verbose) - # countsSe <- bplapply(seq_len(ncol(countMatrix2)), bambu.quantify, - # readClassDist = readClassDist, readClassDt = readClassDt, countMatrix = countMatrix2, - # annotations = annotations, isoreParameters = isoreParameters, - # emParameters = emParameters, trackReads = trackReads, - # returnDistTable = returnDistTable, verbose = verbose, - # BPPARAM = bpParameters) - # countsSe <- combineCountSes(countsSe) - # rowRanges(countsSe) <- annotations - # #metadata(countsSe)$warnings = warnings - # if (trackReads) metadata(seOutput)$readToTranscriptMap = - # generateReadToTranscriptMap(readClass, metadata(readClassDist)$distTable, - # annotations) - # if (returnDistTable) metadata(seOutput)$distTable = metadata(readClassDist)$distTable - # if (rm.readClassSe) file.remove(unlist(readClassList)) - # message("--- Finished running Bambu ---") - # return(countsSe) - - - ###MESSYFOREST sparsematrix countsSeCompressed <- bplapply(seq_len(ncol(countMatrix2)), bambu.quantify, - readClassDist = readClassDist, readClassDt = readClassDt, countMatrix = countMatrix2, - annotations = annotations, isoreParameters = isoreParameters, - emParameters = emParameters, trackReads = trackReads, - returnDistTable = returnDistTable, verbose = verbose, - BPPARAM = bpParameters) - print("bambu.quantify finished") - - ### countsData - countsData <- c("incompatibleCounts", "counts", "CPM", "fullLengthCounts", "uniqueCounts") - countsDataMat <- list() - - for (k in seq_along(countsData)){ - countsVecList <- lapply(seq_along(countsSeCompressed), function(j){countsSeCompressed[[j]][[countsData[k]]]}) - - countsMat <- sparseMatrix(i = unlist(lapply(seq_along(countsVecList), function(j){countsVecList[[j]]@i})), - j = unlist(lapply(seq_along(countsVecList), function(j){rep(j, length(countsVecList[[j]]@i))})), - x = unlist(lapply(seq_along(countsVecList), function(j){countsVecList[[j]]@x})), - dims = c(length(countsVecList[[1]]), length(countsVecList))) - - colnames(countsMat) <- unlist(lapply(seq_along(countsSeCompressed), function(j){countsSeCompressed[[j]]$colnames})) - - if (countsData[k] == "incompatibleCounts"){ - countsMat <- data.table(as.data.frame(as.matrix(countsMat)) %>% - mutate(GENEID = unique(mcols(annotations)$GENEID)) %>% - select(GENEID, everything())) - } - - countsDataMat[[countsData[k]]] <- countsMat - } - - countsSe <- SummarizedExperiment(assays = SimpleList(counts = countsDataMat$counts, - CPM = countsDataMat$CPM, - fullLengthCounts = countsDataMat$fullLengthCounts, - uniqueCounts = countsDataMat$uniqueCounts), - colData = as(bind_rows(lapply(lapply(seq_along(countsSeCompressed), - function(j){countsSeCompressed[[j]]$colData}), as.data.frame)), "DataFrame")) - - metadata(countsSe)$incompatibleCounts <- countsDataMat$incompatibleCounts - rowRanges(countsSe) <- annotations - #metadata(countsSe)$warnings = warnings + readClassDist = readClassDist, readClassDt = readClassDt, countMatrix = countMatrix2, + annotations = annotations, isoreParameters = isoreParameters, + emParameters = emParameters, trackReads = trackReads, + returnDistTable = returnDistTable, verbose = verbose, + BPPARAM = bpParameters) + countsSe <- combineCountSes(countsSe, annotations) - return(countsSe) + #metadata(countsSe)$warnings = warnings + # if (trackReads) metadata(seOutput)$readToTranscriptMap = + # generateReadToTranscriptMap(readClass, metadata(readClassDist)$distTable, + # annotations) + # if (returnDistTable) metadata(seOutput)$distTable = metadata(readClassDist)$distTable + return(countsSe) } } diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index b7fcb88e..347a4268 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -209,15 +209,31 @@ handleWarnings <- function(readClassList, verbose){ #' Combine count se object while preserving the metadata objects #' @noRd -combineCountSes <- function(countsSe, trackReads = FALSE, returnDistTable = FALSE){ - sampleNames = sapply(countsSe, FUN = function(x){colnames(x)}) - # combine incompatible counts - incompatibleCounts = Reduce(merge_wrapper, lapply(countsSe, FUN = function(se){metadata(se)$incompatibleCounts})) - countsSe = lapply(countsSe, FUN = function(se){ - metadata(se)$incompatibleCounts=NULL - return(se)}) - countsSe <- do.call(SummarizedExperiment::cbind, countsSe) - metadata(countsSe)$incompatibleCounts = incompatibleCounts +combineCountSes <- function(countsSe, annotations){ + countsData <- c("counts", "CPM", "fullLengthCounts", "uniqueCounts", "incompatibleCounts") + sampleNames = sapply(countsSeCompressed, FUN = function(x){x$colnames}) + countsDataMat <- lapply(countsData, FUN = function(k){ + countsVecList <- lapply(countsSeCompressed, function(j){j[[k]]}) + countsMat <- sparseMatrix(i = unlist(lapply(countsVecList, function(j){j@i})), + j = unlist(lapply(seq_along(countsVecList), function(j){rep(j, length(countsVecList[[j]]@i))})), + x = unlist(lapply(countsVecList, function(j){j@x})), + dims = c(length(countsVecList[[1]]), length(countsVecList))) + if(all(countsMat==0)){return(NULL)} + colnames(countsMat) <- sampleNames + if (k == "incompatibleCounts"){ + countsMat <- data.table(as.data.frame(as.matrix(countsMat)) %>% + mutate(GENEID = unique(mcols(annotations)$GENEID)) %>% + select(GENEID, everything())) + } + return(countsMat) + }) + names(countsDataMat) = countsData + countsSe <- SummarizedExperiment(assays = SimpleList(counts = countsDataMat$counts, + CPM = countsDataMat$CPM, + fullLengthCounts = countsDataMat$fullLengthCounts, + uniqueCounts = countsDataMat$uniqueCounts)) + metadata(countsSe)$incompatibleCounts <- countsDataMat$incompatibleCounts + rowRanges(countsSe) <- annotations return(countsSe) } From 06233227e1aaae6a6a7ab4e931658c6e2563b2b7 Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 4 Oct 2023 14:56:18 +0800 Subject: [PATCH 050/189] Enable demultiplexing and speed up splitReadClassFiles() --- R/bambu-processReads.R | 45 +++++++++++++++--------------------------- R/bambu.R | 2 +- R/prepareDataFromBam.R | 18 ++++++++--------- 3 files changed, 25 insertions(+), 40 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 17a46dad..ccac9829 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -52,7 +52,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, stranded = stranded, min.readCount = min.readCount, fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, - lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode, demultiplexed = FALSE, index = i)}, + lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode, demultiplexed = demultiplexed, index = i)}, BPPARAM = bpParameters) readGrgList = do.call(c, readGrgList) mcols(readGrgList)$id <- seq_along(readGrgList) @@ -63,7 +63,10 @@ bambu.processReads <- function(reads, annotations, genomeSequence, fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode) + metadata(readClassList)$samples = names(reads) + if(demultiplexed)metadata(readClassList)$samples = metadata(readGrgList)$CB + return(readClassList) countMatrix = splitReadClassFiles(readClassList) colnames(countMatrix) = metadata(readClassList)$samples rownames(countMatrix) = rownames(readClassList) @@ -106,9 +109,7 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, readClass.outputDir = NULL, yieldSize = NULL, stranded = FALSE, min.readCount = 2, fitReadClassModel = TRUE, min.exonOverlap = 10, defaultModels = NULL, returnModel = FALSE, verbose = FALSE, lowMemory = FALSE, trackReads = FALSE, fusionMode = FALSE, demultiplexed = FALSE, index = 0) { - - readGrgList <- prepareDataFromBam(bam.file[[1]], verbose = verbose, use.names = trackReads, demultiplexed) - + readGrgList <- prepareDataFromBam(bam.file[[1]], verbose = verbose, yieldSize = yieldSize, use.names = trackReads, demultiplexed = demultiplexed) warnings = c() warnings = seqlevelCheckReadsAnnotation(readGrgList, annotations) if(verbose & length(warnings) > 0) warning(paste(warnings,collapse = "\n")) @@ -135,7 +136,10 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, # reassign Ids after seqlevels are dropped mcols(readGrgList)$id <- seq_along(readGrgList) } - mcols(readGrgList)$sampleID = index + if(demultiplexed){ + metadata(readGrgList)$CB = levels(mcols(readGrgList)$CB) + mcols(readGrgList)$sampleID = mcols(readGrgList)$sampleID = as.numeric(mcols(readGrgList)$CB) + } else {mcols(readGrgList)$sampleID = index} #removes reads that are outside genome coordinates badReads = which(max(end(ranges(readGrgList)))>= seqlengths(genomeSequence)[as.character(getChrFromGrList(readGrgList))]) @@ -257,28 +261,11 @@ seqlevelCheckReadsAnnotation <- function(reads, annotations){ } splitReadClassFiles = function(readClassFile){ - rowIndex = c() - sampleCount = c() - counts = c() - for(i in seq_along(metadata(readClassFile)$samples)){ - counts.sample = sapply(rowData(readClassFile)$sampleIDs, FUN = function(x){sum(x==i)}) - counts = c(counts, counts.sample[counts.sample != 0]) - rowIndex = c(rowIndex, which(counts.sample != 0)) - sampleCount = c(sampleCount, sum(counts.sample !=0)) - } - counts = sparseMatrix(i = rowIndex, - j = rep(seq_along(metadata(readClassFile)$samples), sampleCount), - x = counts) - -# countMat = sapply(seq_along(metadata(readClassFile)$samples), FUN = function(i){ -# counts.sample = sapply(rowData(readClassFile)$sampleIDs, FUN = function(x){sum(x==i)}) -# return(c(counts.sample[counts.sample != 0], #counts -# which(counts.sample != 0)), #rowindex -# sum(counts.sample !=0)) #sampleCount -# }) -# counts = sparseMatrix(i = countMat[2,], -# j = rep(seq_along(metadata(readClassFile)$samples), countMat[3,]), -# x = countMat[1,]) - - return(counts) + counts.table = lapply(rowData(readClassFile)$sampleIDs, FUN = function(x){table(x)}) + counts = sparseMatrix( + i = rep(seq_along(counts.table), lengths(counts.table)), + j = as.numeric(names(unlist(counts.table))), + x = unlist(counts.table), + dims = c(nrow(readClassFile), length(metadata(readClassFile)$samples))) + return(counts) } diff --git a/R/bambu.R b/R/bambu.R index ba6ac719..26c66549 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -169,7 +169,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, readClass.outputDir = rcOutDir, yieldSize, bpParameters, stranded, verbose, isoreParameters, trackReads = trackReads, fusionMode = fusionMode, - lowMemory = lowMemory, demultiplexed = FALSE) + lowMemory = lowMemory, demultiplexed = demultiplexed) } #warnings = handleWarnings(readClassList, verbose) diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index d595d6f1..f2e7cd26 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -27,24 +27,22 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, use.n counter <- 1 cells <- c() umi <- c() - + if(demultiplexed) use.names = TRUE while (isIncomplete(bf)) { readGrgList[[counter]] <- grglist(readGAlignments(bf, param = ScanBamParam(flag = scanBamFlag(isSecondaryAlignment = FALSE)), use.names = use.names)) - ### add ### if (isTRUE(demultiplexed)){ - mcols(readGrgList[[counter]])$CB <- substr(names(readGrgList[[counter]]), 1, 16) - mcols(readGrgList[[counter]])$UMI <- substr(names(readGrgList[[counter]]), 18, 29) - names(readGrgList[[counter]]) <- NULL - cells <- unique(c(cells, mcols(readGrgList[[counter]])$CB)) - mcols(readGrgList[[counter]])$CB <- factor(mcols(readGrgList[[counter]])$CB, levels = cells) - - umi <- unique(c(umi, mcols(readGrgList[[counter]])$UMI)) - mcols(readGrgList[[counter]])$UMI <- factor(mcols(readGrgList[[counter]])$UMI, levels = umi) + mcols(readGrgList[[counter]])$CB <- substr(names(readGrgList[[counter]]), 1, 16) + mcols(readGrgList[[counter]])$UMI <- substr(names(readGrgList[[counter]]), 18, 29) + names(readGrgList[[counter]]) <- NULL + cells <- unique(c(cells, mcols(readGrgList[[counter]])$CB)) + mcols(readGrgList[[counter]])$CB <- factor(mcols(readGrgList[[counter]])$CB, levels = cells) + umi <- unique(c(umi, mcols(readGrgList[[counter]])$UMI)) + mcols(readGrgList[[counter]])$UMI <- factor(mcols(readGrgList[[counter]])$UMI, levels = umi) } ### add ### From 32b569274102fe37bf4a207c630ae1be18acd107 Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 4 Oct 2023 15:00:05 +0800 Subject: [PATCH 051/189] fix formatting issues --- R/bambu-processReads.R | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index ccac9829..401864b6 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -66,7 +66,6 @@ bambu.processReads <- function(reads, annotations, genomeSequence, metadata(readClassList)$samples = names(reads) if(demultiplexed)metadata(readClassList)$samples = metadata(readGrgList)$CB - return(readClassList) countMatrix = splitReadClassFiles(readClassList) colnames(countMatrix) = metadata(readClassList)$samples rownames(countMatrix) = rownames(readClassList) @@ -87,17 +86,6 @@ bambu.processReads <- function(reads, annotations, genomeSequence, # saveRDS(se, file = readClassFile) # se <- readClassFile # } - - - # readClassList <- bplapply(names(reads), function(bamFileName) { - # bambu.processReadsByFile(bam.file = reads[bamFileName], - # genomeSequence = genomeSequence,annotations = annotations, - # readClass.outputDir = readClass.outputDir, - # stranded = stranded, min.readCount = min.readCount, - # fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, - # defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, - # lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode)}, - # BPPARAM = bpParameters) return(readClassList) } @@ -263,9 +251,9 @@ seqlevelCheckReadsAnnotation <- function(reads, annotations){ splitReadClassFiles = function(readClassFile){ counts.table = lapply(rowData(readClassFile)$sampleIDs, FUN = function(x){table(x)}) counts = sparseMatrix( - i = rep(seq_along(counts.table), lengths(counts.table)), - j = as.numeric(names(unlist(counts.table))), - x = unlist(counts.table), - dims = c(nrow(readClassFile), length(metadata(readClassFile)$samples))) + i = rep(seq_along(counts.table), lengths(counts.table)), + j = as.numeric(names(unlist(counts.table))), + x = unlist(counts.table), + dims = c(nrow(readClassFile), length(metadata(readClassFile)$samples))) return(counts) } From c2b3bf5fb78b2150870f56e4f349a2f199536a14 Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 4 Oct 2023 16:05:10 +0800 Subject: [PATCH 052/189] fix bugs --- R/bambu-processReads.R | 3 ++- R/bambu-quantify.R | 2 ++ R/bambu.R | 6 +++--- R/bambu_utilityFunctions.R | 4 ++-- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 401864b6..6d880596 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -86,7 +86,8 @@ bambu.processReads <- function(reads, annotations, genomeSequence, # saveRDS(se, file = readClassFile) # se <- readClassFile # } - return(readClassList) + #TODO don't output list, current there because discovery needs it + return(list(readClassList)) } #' Preprocess bam files and save read class files diff --git a/R/bambu-quantify.R b/R/bambu-quantify.R index 0a4d5e70..e7def6c1 100644 --- a/R/bambu-quantify.R +++ b/R/bambu-quantify.R @@ -5,6 +5,8 @@ bambu.quantify <- function(i, readClassDist, readClassDt, countMatrix, annotations, emParameters, trackReads = FALSE, returnDistTable = FALSE, verbose = FALSE, isoreParameters = setIsoreParameters(NULL)) { + print(i) + #TODO do not alter readClassDist and readClassDT objects to save memory metadata(readClassDist)$distTable$readCount <- countMatrix[,i] metadata(readClassDist)$distTable = metadata(readClassDist)$distTable[metadata(readClassDist)$distTable$readCount != 0,] readClassDt$nobs = calculateEqClassCounts(metadata(readClassDist)$distTable, readClassDt) diff --git a/R/bambu.R b/R/bambu.R index 26c66549..369be17e 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -176,7 +176,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, if (!discovery & !quant) return(readClassList) if (discovery) { message("--- Start extending annotations ---") - annotations <- bambu.extendAnnotations(list(readClassList), annotations, NDR, + annotations <- bambu.extendAnnotations(readClassList, annotations, NDR, isoreParameters, stranded, bpParameters, fusionMode, verbose) metadata(annotations)$warnings = warnings @@ -201,14 +201,14 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, countMatrix2 = as.matrix(metadata(readClassList)$countMatrix[metadata(readClassDist)$distTable$readClassId,]) colnames(countMatrix2) = colnames(metadata(readClassList)$countMatrix) readClassDt <- genEquiRCs(readClassDist, annotations, verbose) - + print(ncol(countMatrix2)) countsSeCompressed <- bplapply(seq_len(ncol(countMatrix2)), bambu.quantify, readClassDist = readClassDist, readClassDt = readClassDt, countMatrix = countMatrix2, annotations = annotations, isoreParameters = isoreParameters, emParameters = emParameters, trackReads = trackReads, returnDistTable = returnDistTable, verbose = verbose, BPPARAM = bpParameters) - countsSe <- combineCountSes(countsSe, annotations) + countsSe <- combineCountSes(countsSeCompressed, annotations) #metadata(countsSe)$warnings = warnings # if (trackReads) metadata(seOutput)$readToTranscriptMap = diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index 347a4268..e728b3f8 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -211,9 +211,9 @@ handleWarnings <- function(readClassList, verbose){ #' @noRd combineCountSes <- function(countsSe, annotations){ countsData <- c("counts", "CPM", "fullLengthCounts", "uniqueCounts", "incompatibleCounts") - sampleNames = sapply(countsSeCompressed, FUN = function(x){x$colnames}) + sampleNames = sapply(countsSe, FUN = function(x){x$colnames}) countsDataMat <- lapply(countsData, FUN = function(k){ - countsVecList <- lapply(countsSeCompressed, function(j){j[[k]]}) + countsVecList <- lapply(countsSe, function(j){j[[k]]}) countsMat <- sparseMatrix(i = unlist(lapply(countsVecList, function(j){j@i})), j = unlist(lapply(seq_along(countsVecList), function(j){rep(j, length(countsVecList[[j]]@i))})), x = unlist(lapply(countsVecList, function(j){j@x})), From 7b3eb82734e9ed44879dad48246048aea7263238 Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 4 Oct 2023 16:17:32 +0800 Subject: [PATCH 053/189] Enable threading for demultiplexed samples --- R/bambu.R | 2 ++ 1 file changed, 2 insertions(+) diff --git a/R/bambu.R b/R/bambu.R index 369be17e..c75d69ab 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -202,6 +202,8 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, colnames(countMatrix2) = colnames(metadata(readClassList)$countMatrix) readClassDt <- genEquiRCs(readClassDist, annotations, verbose) print(ncol(countMatrix2)) + bpParameters$workers = ncore #TODO temp fix because currently its set to number of input files + bpParameters$progressbar = TRUE countsSeCompressed <- bplapply(seq_len(ncol(countMatrix2)), bambu.quantify, readClassDist = readClassDist, readClassDt = readClassDt, countMatrix = countMatrix2, annotations = annotations, isoreParameters = isoreParameters, From f68e30d767ee1c4afb9c91ec433548c1ab500b5c Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 4 Oct 2023 16:21:36 +0800 Subject: [PATCH 054/189] Remove progress bar --- R/bambu.R | 1 - 1 file changed, 1 deletion(-) diff --git a/R/bambu.R b/R/bambu.R index c75d69ab..926cab81 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -203,7 +203,6 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, readClassDt <- genEquiRCs(readClassDist, annotations, verbose) print(ncol(countMatrix2)) bpParameters$workers = ncore #TODO temp fix because currently its set to number of input files - bpParameters$progressbar = TRUE countsSeCompressed <- bplapply(seq_len(ncol(countMatrix2)), bambu.quantify, readClassDist = readClassDist, readClassDt = readClassDt, countMatrix = countMatrix2, annotations = annotations, isoreParameters = isoreParameters, From fe146680ee30ee1a7fb5549c457809f2dff325a0 Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 4 Oct 2023 16:30:19 +0800 Subject: [PATCH 055/189] adapt threading for demultiplexing --- R/bambu.R | 3 +-- R/bambu_utilityFunctions.R | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 926cab81..2e52800b 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -148,7 +148,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, if(!is.null(isoreParameters$max.txNDR)) NDR = isoreParameters$max.txNDR emParameters <- setEmParameters(emParameters = opt.em) - bpParameters <- setBiocParallelParameters(reads, ncore, verbose) + bpParameters <- setBiocParallelParameters(reads, ncore, verbose, demultiplexed) rm.readClassSe <- FALSE readClassList = reads @@ -202,7 +202,6 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, colnames(countMatrix2) = colnames(metadata(readClassList)$countMatrix) readClassDt <- genEquiRCs(readClassDist, annotations, verbose) print(ncol(countMatrix2)) - bpParameters$workers = ncore #TODO temp fix because currently its set to number of input files countsSeCompressed <- bplapply(seq_len(ncol(countMatrix2)), bambu.quantify, readClassDist = readClassDist, readClassDt = readClassDt, countMatrix = countMatrix2, annotations = annotations, isoreParameters = isoreParameters, diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index e728b3f8..d8501e77 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -3,13 +3,13 @@ #' setBiocParallelParameters #' @importFrom BiocParallel bpparam #' @noRd -setBiocParallelParameters <- function(reads, ncore, verbose){ +setBiocParallelParameters <- function(reads, ncore, verbose, demultiplexed){ if(ncore >= 2) message("WARNING - If you change the number of cores (ncore) ", "between Bambu runs and there is no progress please restart your R session ", "to resolve the issue that originates from the XGboost package.") bpParameters <- bpparam() #===# set parallel options: otherwise use parallel to distribute samples - bpParameters$workers <- ifelse(length(reads) == 1, 1, ncore) + bpParameters$workers <- ifelse(length(reads) == 1 & !demultiplexed, 1, ncore) bpParameters$progressbar <- ifelse(length(reads) > 1 & !verbose, TRUE, FALSE) return(bpParameters) } From 64f2d9db4b9a4c10441ee6f779c217e9e02e78b9 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 5 Oct 2023 11:14:12 +0800 Subject: [PATCH 056/189] Reduce memory input to threads --- R/bambu-quantify.R | 41 +++++++++-------------------- R/bambu-quantify_utilityFunctions.R | 26 +++++++----------- R/bambu.R | 17 +++++++++--- 3 files changed, 36 insertions(+), 48 deletions(-) diff --git a/R/bambu-quantify.R b/R/bambu-quantify.R index e7def6c1..f3f73237 100644 --- a/R/bambu-quantify.R +++ b/R/bambu-quantify.R @@ -2,40 +2,25 @@ #' @inheritParams bambu #' @import data.table #' @noRd -bambu.quantify <- function(i, readClassDist, readClassDt, countMatrix, annotations, emParameters, +bambu.quantify <- function(distTable, readClassDt, countMatrix, sampleName, txid.index, GENEIDs, emParameters, trackReads = FALSE, returnDistTable = FALSE, verbose = FALSE, isoreParameters = setIsoreParameters(NULL)) { - print(i) - #TODO do not alter readClassDist and readClassDT objects to save memory - metadata(readClassDist)$distTable$readCount <- countMatrix[,i] - metadata(readClassDist)$distTable = metadata(readClassDist)$distTable[metadata(readClassDist)$distTable$readCount != 0,] - readClassDt$nobs = calculateEqClassCounts(metadata(readClassDist)$distTable, readClassDt) - incompatibleCounts <- processIncompatibleCounts(readClassDist) + distTable$readCount <- countMatrix + distTable = metadata(readClassDist)$distTable[metadata(readClassDist)$distTable$readCount != 0,] + readClassDt$nobs = calculateEqClassCounts(distTable, readClassDt) + incompatibleCounts <- processIncompatibleCounts(distTable) compatibleCounts <- bambu.quantDT(readClassDt, emParameters = emParameters,verbose = verbose) - incompatibleCounts <- incompatibleCounts[data.table(GENEID = unique(mcols(annotations)$GENEID)), on = "GENEID"] + incompatibleCounts <- incompatibleCounts[data.table(GENEID.i = GENEIDs), on = "GENEID.i"] incompatibleCounts[is.na(counts), counts := 0] compatibleCounts <- calculateCPM(compatibleCounts, incompatibleCounts) - setnames(incompatibleCounts, "counts", colnames(countMatrix)[i]) - counts <- compatibleCounts[match(mcols(annotations)$txid, txid)] - colNameRC <- colnames(countMatrix)[i] - colDataRC <- NULL # TODO carry over coldata??!! + setnames(incompatibleCounts, "counts", sampleName) + counts <- compatibleCounts[match(txid.index, txid)] sig.digit <- emParameters[["sig.digit"]] - seOutput <- SummarizedExperiment( - assays = SimpleList(counts = matrix(round(counts$counts,sig.digit), ncol = 1, - dimnames = list(NULL, colNameRC)), CPM = matrix(round(counts$CPM,sig.digit), - ncol = 1, dimnames = list(NULL, colNameRC)), - fullLengthCounts = matrix(round(counts$fullLengthCounts,sig.digit), ncol = 1, - dimnames = list(NULL, colNameRC)), - uniqueCounts = matrix(counts$uniqueCounts, - ncol = 1, dimnames = list(NULL, colNameRC)))) - metadata(seOutput)$incompatibleCounts = incompatibleCounts - - seOutput <- list(incompatibleCounts = as(metadata(seOutput)$incompatibleCounts[[colnames(seOutput)]], "sparseVector"), - counts = as(assays(seOutput)$counts, "sparseVector"), - CPM = as(assays(seOutput)$CPM, "sparseVector"), - fullLengthCounts = as(assays(seOutput)$fullLengthCounts, "sparseVector"), - uniqueCounts = as(assays(seOutput)$uniqueCounts, "sparseVector"), - colnames = colnames(seOutput), colData = colData(seOutput)) + seOutput <- list(incompatibleCounts = as(incompatibleCounts[[sampleName]], "sparseVector"), + counts = as(round(counts$counts,sig.digit), "sparseVector"), + CPM = as(round(counts$CPM,sig.digit), "sparseVector"), + fullLengthCounts = as(round(counts$fullLengthCounts,sig.digit), "sparseVector"), + uniqueCounts = as(counts$uniqueCounts, "sparseVector")) return(seOutput) } diff --git a/R/bambu-quantify_utilityFunctions.R b/R/bambu-quantify_utilityFunctions.R index bf07d9dd..78b38534 100644 --- a/R/bambu-quantify_utilityFunctions.R +++ b/R/bambu-quantify_utilityFunctions.R @@ -19,22 +19,16 @@ modifyIncompatibleAssignment <- function(distTable){ #' Process incompatible counts #' @noRd -processIncompatibleCounts <- function(readClassDist){ - distTable <- data.table(as.data.frame(metadata(readClassDist)$distTable))[, - .(readClassId, annotationTxId, readCount, GENEID, dist,equal)] - distTableIncompatible <- distTable[grep("unidentified", annotationTxId)] - # filter out multiple geneIDs mapped to the same readClass using rowData(se) - geneRCMap <- as.data.table(as.data.frame(rowData(readClassDist)), - keep.rownames = TRUE) - setnames(geneRCMap, old = c("rn", "geneId"), - new = c("readClassId", "GENEID")) - distTable <- distTable[geneRCMap[ readClassId %in% - unique(distTableIncompatible$readClassId), .(readClassId, GENEID)], - on = c("readClassId", "GENEID")] - distTable[, readCount := sum(readCount), by = GENEID] - counts <- unique(distTable[,.(GENEID, readCount)]) - setnames(counts, "readCount", "counts") - return(counts) +processIncompatibleCounts <- function(distTable){ + distTable <- data.table(as.data.frame(distTable))[, + .(readClassId, annotationTxId, readCount, GENEID, GENEID.match, GENEID.i, dist,equal)] + distTable <- distTable[grep("unidentified", annotationTxId)] + # filter out multiple geneIDs mapped to the same readClass using rowData(se) + distTable[GENEID.match,] + distTable[, readCount := sum(readCount), by = GENEID] + counts <- unique(distTable[,.(GENEID, GENEID.i, readCount)]) + setnames(counts, "readCount", "counts") + return(counts) } diff --git a/R/bambu.R b/R/bambu.R index 2e52800b..19e25257 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -202,12 +202,21 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, colnames(countMatrix2) = colnames(metadata(readClassList)$countMatrix) readClassDt <- genEquiRCs(readClassDist, annotations, verbose) print(ncol(countMatrix2)) - countsSeCompressed <- bplapply(seq_len(ncol(countMatrix2)), bambu.quantify, - readClassDist = readClassDist, readClassDt = readClassDt, countMatrix = countMatrix2, - annotations = annotations, isoreParameters = isoreParameters, + GENEIDs = factor(unique(mcols(annotations)$GENEID)) + GENEID.i = as.numeric(GENEIDs) + metadata(readClassDist)$distTable$GENEID.i = GENEID.i[match(distTable$GENEID, GENEIDs)] + + metadata(readClassDist)$distTable$GENEID.match = rowData(readClassDist)$geneId[match(distTable$readClassId, rownames(rowData(readClassDist)))] + metadata(readClassDist)$distTable$GENEID.match = metadata(readClassDist)$distTable$GENEID.match == metadata(readClassDist)$distTable$GENEID + + countsSeCompressed <- bplapply(seq_len(ncol(countMatrix2)), FUN = function(i){ + print(i) + return(bambu.quantify(distTable = metadata(readClassDist)$distTable, readClassDt = readClassDt, countMatrix = unname(countMatrix2[,i]), + sampleName = colnames(countMatrix2)[i], txid.index = mcols(annotations)$txid, GENEIDs = GENEID.i, isoreParameters = isoreParameters, emParameters = emParameters, trackReads = trackReads, - returnDistTable = returnDistTable, verbose = verbose, + returnDistTable = returnDistTable, verbose = verbose))}, BPPARAM = bpParameters) + countsSeCompressed$colnames = colnames(countMatrix) countsSe <- combineCountSes(countsSeCompressed, annotations) #metadata(countsSe)$warnings = warnings From 5f87c7689fe9108857812dbbc8d7ea38d6556dc4 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 5 Oct 2023 13:28:07 +0800 Subject: [PATCH 057/189] Reduce memory before threading --- R/bambu-quantify.R | 9 ++++----- R/bambu-quantify_utilityFunctions.R | 2 +- R/bambu.R | 19 ++++++++++++------- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/R/bambu-quantify.R b/R/bambu-quantify.R index f3f73237..b6993528 100644 --- a/R/bambu-quantify.R +++ b/R/bambu-quantify.R @@ -2,25 +2,24 @@ #' @inheritParams bambu #' @import data.table #' @noRd -bambu.quantify <- function(distTable, readClassDt, countMatrix, sampleName, txid.index, GENEIDs, emParameters, +bambu.quantify <- function(distTable, readClassDt, countMatrix, txid.index, GENEIDs, emParameters, trackReads = FALSE, returnDistTable = FALSE, verbose = FALSE, isoreParameters = setIsoreParameters(NULL)) { distTable$readCount <- countMatrix - distTable = metadata(readClassDist)$distTable[metadata(readClassDist)$distTable$readCount != 0,] + distTable = distTable[distTable$readCount != 0,] readClassDt$nobs = calculateEqClassCounts(distTable, readClassDt) incompatibleCounts <- processIncompatibleCounts(distTable) compatibleCounts <- bambu.quantDT(readClassDt, emParameters = emParameters,verbose = verbose) incompatibleCounts <- incompatibleCounts[data.table(GENEID.i = GENEIDs), on = "GENEID.i"] incompatibleCounts[is.na(counts), counts := 0] compatibleCounts <- calculateCPM(compatibleCounts, incompatibleCounts) - setnames(incompatibleCounts, "counts", sampleName) counts <- compatibleCounts[match(txid.index, txid)] sig.digit <- emParameters[["sig.digit"]] - seOutput <- list(incompatibleCounts = as(incompatibleCounts[[sampleName]], "sparseVector"), + seOutput <- list(incompatibleCounts = as(incompatibleCounts$counts, "sparseVector"), counts = as(round(counts$counts,sig.digit), "sparseVector"), CPM = as(round(counts$CPM,sig.digit), "sparseVector"), fullLengthCounts = as(round(counts$fullLengthCounts,sig.digit), "sparseVector"), - uniqueCounts = as(counts$uniqueCounts, "sparseVector")) + uniqueCounts = as(round(counts$uniqueCounts,sig.digit), "sparseVector")) return(seOutput) } diff --git a/R/bambu-quantify_utilityFunctions.R b/R/bambu-quantify_utilityFunctions.R index 78b38534..f0ec3f25 100644 --- a/R/bambu-quantify_utilityFunctions.R +++ b/R/bambu-quantify_utilityFunctions.R @@ -24,7 +24,7 @@ processIncompatibleCounts <- function(distTable){ .(readClassId, annotationTxId, readCount, GENEID, GENEID.match, GENEID.i, dist,equal)] distTable <- distTable[grep("unidentified", annotationTxId)] # filter out multiple geneIDs mapped to the same readClass using rowData(se) - distTable[GENEID.match,] + distTable[GENEID.match==TRUE,] distTable[, readCount := sum(readCount), by = GENEID] counts <- unique(distTable[,.(GENEID, GENEID.i, readCount)]) setnames(counts, "readCount", "counts") diff --git a/R/bambu.R b/R/bambu.R index 19e25257..0402b77c 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -198,21 +198,26 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, verbose = verbose) metadata(readClassDist)$distTable <- modifyIncompatibleAssignment(metadata(readClassDist)$distTable) metadata(readClassDist)$distTable <- genEquiRCsBasedOnObservedReads(readClassDist) - countMatrix2 = as.matrix(metadata(readClassList)$countMatrix[metadata(readClassDist)$distTable$readClassId,]) + countMatrix2 = metadata(readClassList)$countMatrix[metadata(readClassDist)$distTable$readClassId,] colnames(countMatrix2) = colnames(metadata(readClassList)$countMatrix) readClassDt <- genEquiRCs(readClassDist, annotations, verbose) print(ncol(countMatrix2)) + distTable = metadata(readClassDist)$distTable GENEIDs = factor(unique(mcols(annotations)$GENEID)) GENEID.i = as.numeric(GENEIDs) - metadata(readClassDist)$distTable$GENEID.i = GENEID.i[match(distTable$GENEID, GENEIDs)] - - metadata(readClassDist)$distTable$GENEID.match = rowData(readClassDist)$geneId[match(distTable$readClassId, rownames(rowData(readClassDist)))] - metadata(readClassDist)$distTable$GENEID.match = metadata(readClassDist)$distTable$GENEID.match == metadata(readClassDist)$distTable$GENEID + distTable$GENEID.i = GENEID.i[match(distTable$GENEID, GENEIDs)] + #check distTable and rowData match for incompatible counts + distTable$GENEID.match = rowData(readClassDist)$geneId[match(distTable$readClassId, rownames(rowData(readClassDist)))] + distTable$GENEID.match = distTable$GENEID.match == distTable$GENEID + + rm(readClassDist) + rm(readClassList) + gc() countsSeCompressed <- bplapply(seq_len(ncol(countMatrix2)), FUN = function(i){ print(i) - return(bambu.quantify(distTable = metadata(readClassDist)$distTable, readClassDt = readClassDt, countMatrix = unname(countMatrix2[,i]), - sampleName = colnames(countMatrix2)[i], txid.index = mcols(annotations)$txid, GENEIDs = GENEID.i, isoreParameters = isoreParameters, + return(bambu.quantify(distTable = distTable, readClassDt = readClassDt, countMatrix = unname(countMatrix2[,i]), + txid.index = mcols(annotations)$txid, GENEIDs = GENEID.i, isoreParameters = isoreParameters, emParameters = emParameters, trackReads = trackReads, returnDistTable = returnDistTable, verbose = verbose))}, BPPARAM = bpParameters) From 8495cc8b9f1e5421f63acde8abbe6eb03b4bce7e Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 6 Oct 2023 13:42:44 +0800 Subject: [PATCH 058/189] Clean up distTable code --- R/bambu.R | 27 ++++++--------------------- R/bambu_utilityFunctions.R | 25 +++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 21 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 0402b77c..98d0ce15 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -184,44 +184,29 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, } if (quant) { - message("--- Start isoform quantification ---") if(length(annotations)==0) stop("No valid annotations, if running de novo please try less stringent parameters") if (is.character(readClassList)) readClassList <- readRDS(file = readClassList) if(is.list(readClassList)) readClassList = readClassList[[1]] - readClassDist <- isore.estimateDistanceToAnnotations(readClassList, annotations, - min.exonDistance = isoreParameters[["min.exonDistance"]], - min.primarySecondaryDist = isoreParameters[['min.primarySecondaryDist']], - min.primarySecondaryDistStartEnd = isoreParameters[['min.primarySecondaryDistStartEnd2']], - verbose = verbose) - metadata(readClassDist)$distTable <- modifyIncompatibleAssignment(metadata(readClassDist)$distTable) - metadata(readClassDist)$distTable <- genEquiRCsBasedOnObservedReads(readClassDist) - countMatrix2 = metadata(readClassList)$countMatrix[metadata(readClassDist)$distTable$readClassId,] - colnames(countMatrix2) = colnames(metadata(readClassList)$countMatrix) + readClassDist <- calculateDistTable(readClassList, annotations, isoreParameters, verbose) readClassDt <- genEquiRCs(readClassDist, annotations, verbose) - print(ncol(countMatrix2)) - distTable = metadata(readClassDist)$distTable - GENEIDs = factor(unique(mcols(annotations)$GENEID)) - GENEID.i = as.numeric(GENEIDs) - distTable$GENEID.i = GENEID.i[match(distTable$GENEID, GENEIDs)] - #check distTable and rowData match for incompatible counts - distTable$GENEID.match = rowData(readClassDist)$geneId[match(distTable$readClassId, rownames(rowData(readClassDist)))] - distTable$GENEID.match = distTable$GENEID.match == distTable$GENEID + distTable = metadata(readClassDist)$distTable + countMatrix.matched = metadata(readClassList)$countMatrix.matched rm(readClassDist) rm(readClassList) gc() - countsSeCompressed <- bplapply(seq_len(ncol(countMatrix2)), FUN = function(i){ + countsSeCompressed <- bplapply(seq_len(ncol(countMatrix.matched)), FUN = function(i){ print(i) - return(bambu.quantify(distTable = distTable, readClassDt = readClassDt, countMatrix = unname(countMatrix2[,i]), + return(bambu.quantify(distTable = distTable, readClassDt = readClassDt, countMatrix = unname(countMatrix.matched[,i]), txid.index = mcols(annotations)$txid, GENEIDs = GENEID.i, isoreParameters = isoreParameters, emParameters = emParameters, trackReads = trackReads, returnDistTable = returnDistTable, verbose = verbose))}, BPPARAM = bpParameters) - countsSeCompressed$colnames = colnames(countMatrix) + countsSeCompressed$colnames = colnames(countMatrix.matched) countsSe <- combineCountSes(countsSeCompressed, annotations) #metadata(countsSe)$warnings = warnings diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index d8501e77..1ad2e57e 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -206,6 +206,31 @@ handleWarnings <- function(readClassList, verbose){ return(warnings) } +#' Calculate the dist table used for Bambu Quantification +calculateDistTable <- function(readClassList, annotations, isoreParameters, verbose){ + readClassDist <- isore.estimateDistanceToAnnotations(readClassList, annotations, + min.exonDistance = isoreParameters[["min.exonDistance"]], + min.primarySecondaryDist = isoreParameters[['min.primarySecondaryDist']], + min.primarySecondaryDistStartEnd = isoreParameters[['min.primarySecondaryDistStartEnd2']], + verbose = verbose) + metadata(readClassDist)$distTable <- modifyIncompatibleAssignment(metadata(readClassDist)$distTable) + metadata(readClassDist)$distTable <- genEquiRCsBasedOnObservedReads(readClassDist) + #match count matrix with distTable to speed up calculations + metadata(readClassList)$countMatrix.matched = + metadata(readClassList)$countMatrix[metadata(readClassDist)$distTable$readClassId,] + colnames(metadata(readClassList)$countMatrix.matched) = colnames(metadata(readClassList)$countMatrix) + #convert string gene ids into index to save memory + GENEIDs = factor(unique(mcols(annotations)$GENEID)) + GENEID.i = as.numeric(GENEIDs) + metadata(readClassDist)$distTable$GENEID.i = GENEID.i[match(metadata(readClassDist)$distTable$GENEID, GENEIDs)] + #check distTable and rowData match for incompatible counts + metadata(readClassDist)$distTable$GENEID.match = + rowData(readClassDist)$geneId[match(metadata(readClassDist)$distTable$readClassId, + rownames(rowData(readClassDist)))] + metadata(readClassDist)$distTable$GENEID.match = + metadata(readClassDist)$distTable$GENEID.match == distTable$GENEID + return(readClassDist) +} #' Combine count se object while preserving the metadata objects #' @noRd From 58351680c7f26e384d762e301bd74449931e2b5d Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 6 Oct 2023 14:58:46 +0800 Subject: [PATCH 059/189] Fix crash at end caused by sample names --- R/bambu.R | 2 +- R/bambu_utilityFunctions.R | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 98d0ce15..9a1e4e2c 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -194,7 +194,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, readClassDt <- genEquiRCs(readClassDist, annotations, verbose) distTable = metadata(readClassDist)$distTable - countMatrix.matched = metadata(readClassList)$countMatrix.matched + countMatrix.matched = metadata(readClassDist)$countMatrix.matched rm(readClassDist) rm(readClassList) gc() diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index 1ad2e57e..f332ea9e 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -216,9 +216,9 @@ calculateDistTable <- function(readClassList, annotations, isoreParameters, verb metadata(readClassDist)$distTable <- modifyIncompatibleAssignment(metadata(readClassDist)$distTable) metadata(readClassDist)$distTable <- genEquiRCsBasedOnObservedReads(readClassDist) #match count matrix with distTable to speed up calculations - metadata(readClassList)$countMatrix.matched = + metadata(readClassDist)$countMatrix.matched = metadata(readClassList)$countMatrix[metadata(readClassDist)$distTable$readClassId,] - colnames(metadata(readClassList)$countMatrix.matched) = colnames(metadata(readClassList)$countMatrix) + colnames(metadata(readClassDist)$countMatrix.matched) = colnames(metadata(readClassList)$countMatrix) #convert string gene ids into index to save memory GENEIDs = factor(unique(mcols(annotations)$GENEID)) GENEID.i = as.numeric(GENEIDs) @@ -236,7 +236,8 @@ calculateDistTable <- function(readClassList, annotations, isoreParameters, verb #' @noRd combineCountSes <- function(countsSe, annotations){ countsData <- c("counts", "CPM", "fullLengthCounts", "uniqueCounts", "incompatibleCounts") - sampleNames = sapply(countsSe, FUN = function(x){x$colnames}) + sampleNames = countsSe$colnames + countsSe$colnames = NULL countsDataMat <- lapply(countsData, FUN = function(k){ countsVecList <- lapply(countsSe, function(j){j[[k]]}) countsMat <- sparseMatrix(i = unlist(lapply(countsVecList, function(j){j@i})), From 970c6284d3d7170c53102a21b16bfe36bf4bbced Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 12 Oct 2023 10:27:48 +0800 Subject: [PATCH 060/189] add in missing variable --- R/bambu.R | 4 ++-- R/bambu_utilityFunctions.R | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 9a1e4e2c..df67bc5c 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -198,11 +198,11 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, rm(readClassDist) rm(readClassList) gc() - + GENEIDs.i = as.numeric(factor(unique(mcols(annotations)$GENEID))) countsSeCompressed <- bplapply(seq_len(ncol(countMatrix.matched)), FUN = function(i){ print(i) return(bambu.quantify(distTable = distTable, readClassDt = readClassDt, countMatrix = unname(countMatrix.matched[,i]), - txid.index = mcols(annotations)$txid, GENEIDs = GENEID.i, isoreParameters = isoreParameters, + txid.index = mcols(annotations)$txid, GENEIDs = GENEIDs.i, isoreParameters = isoreParameters, emParameters = emParameters, trackReads = trackReads, returnDistTable = returnDistTable, verbose = verbose))}, BPPARAM = bpParameters) diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index f332ea9e..ae793b3a 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -228,7 +228,7 @@ calculateDistTable <- function(readClassList, annotations, isoreParameters, verb rowData(readClassDist)$geneId[match(metadata(readClassDist)$distTable$readClassId, rownames(rowData(readClassDist)))] metadata(readClassDist)$distTable$GENEID.match = - metadata(readClassDist)$distTable$GENEID.match == distTable$GENEID + metadata(readClassDist)$distTable$GENEID.match == metadata(readClassDist)$distTable$GENEID return(readClassDist) } From 219d5e82781a5e8ec5410f9c5d17843a8404cb0c Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 19 Oct 2023 14:43:49 +0800 Subject: [PATCH 061/189] Instead calculate eqClass counts before parralellization --- R/bambu-processReads.R | 46 ++++++++++++++++++++++++++++++-------- R/bambu-quantify.R | 12 +++++----- R/bambu.R | 18 +++++++-------- R/bambu_utilityFunctions.R | 18 ++++++--------- 4 files changed, 58 insertions(+), 36 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 6d880596..4d00bb91 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -66,10 +66,8 @@ bambu.processReads <- function(reads, annotations, genomeSequence, metadata(readClassList)$samples = names(reads) if(demultiplexed)metadata(readClassList)$samples = metadata(readGrgList)$CB - countMatrix = splitReadClassFiles(readClassList) - colnames(countMatrix) = metadata(readClassList)$samples - rownames(countMatrix) = rownames(readClassList) - metadata(readClassList)$countMatrix = countMatrix + metadata(readClassList)$readClassDist <- calculateDistTable(readClassList, annotations, isoreParameters, verbose) + readClassList = splitReadClassFiles(readClassList) # TODO return output # if (!is.null(readClass.outputDir)) { @@ -173,7 +171,7 @@ constructReadClasses <- function(readGrgList, genomeSequence, annotations, warnings = c() ###TODO # construct read classes for each chromosome seperately if(lowMemory) {se <- lowMemoryConstructReadClasses(readGrgList, genomeSequence, - annotations, stranded, verbose,bam.file) + annotations, stranded, verbose,"TODO") } else { unlisted_junctions <- unlistIntrons(readGrgList, use.ids = TRUE) if(length(unlisted_junctions)==0){ @@ -222,7 +220,7 @@ lowMemoryConstructReadClasses <- function(readGrgList, genomeSequence, uniqueJunctions <- isore.constructJunctionTables(unlisted_junctions, annotations,genomeSequence, stranded = stranded, verbose = verbose) se.temp <- isore.constructReadClasses(readGrgList[[i]], - unlisted_junctions, uniqueJunctions, runName = names(bam.file)[1], + unlisted_junctions, uniqueJunctions, runName = "TODO", annotations, stranded, verbose) return(se.temp) }) @@ -250,11 +248,41 @@ seqlevelCheckReadsAnnotation <- function(reads, annotations){ } splitReadClassFiles = function(readClassFile){ - counts.table = lapply(rowData(readClassFile)$sampleIDs, FUN = function(x){table(x)}) + distTable = metadata(metadata(readClassFile)$readClassDist)$distTable + eqClasses = distTable %>% group_by(eqClassById) %>% + distinct(eqClassById, readCount,GENEID, .keep_all = TRUE) + eqClasses$sampleIDs = rowData(readClassFile)$sampleIDs[match(eqClasses$readClassId, rownames(readClassFile))] + eqClasses = eqClasses %>% summarise(nobs = sum(readCount), + sampleIDs = list(unlist(sampleIDs))) + counts.table = lapply(eqClasses$sampleIDs, FUN = function(x){table(x)}) counts = sparseMatrix( i = rep(seq_along(counts.table), lengths(counts.table)), j = as.numeric(names(unlist(counts.table))), x = unlist(counts.table), - dims = c(nrow(readClassFile), length(metadata(readClassFile)$samples))) - return(counts) + dims = c(nrow(eqClasses), length(metadata(readClassFile)$samples))) + #incompatible counts + distTable = metadata(metadata(readClassFile)$readClassDist)$distTable.incompatible + if(nrow(distTable)==0) { + counts.incompatible = sparseMatrix(i= 1, j = 1, x = 0, + dims = c(1, length(metadata(readClassFile)$samples))) + rownames(counts.incompatible) = "TODO" + } else{ + distTable$sampleIDs = rowData(readClassFile)$sampleIDs[match(distTable$readClassId, rownames(readClassFile))] + distTable = distTable %>% group_by(GENEID.i) %>% summarise(counts = sum(readCount), + sampleIDs = list(unlist(sampleIDs))) + counts.table = lapply(distTable$sampleIDs, FUN = function(x){table(x)}) + counts.incompatible = sparseMatrix( + i = rep(seq_along(counts.table), lengths(counts.table)), + j = as.numeric(names(unlist(counts.table))), + x = unlist(counts.table), + dims = c(nrow(distTable), length(metadata(readClassFile)$samples))) + colnames(counts.incompatible) = metadata(readClassFile)$samples + rownames(counts.incompatible) = distTable$GENEID.i + } + colnames(counts) = metadata(readClassFile)$samples + metadata(readClassFile)$eqClassById = eqClasses$eqClassById + #rownames(counts) = eqClasses$eqClassById + metadata(readClassFile)$countMatrix = counts + metadata(readClassFile)$incompatibleCountMatrix = counts.incompatible + return(readClassFile ) } diff --git a/R/bambu-quantify.R b/R/bambu-quantify.R index b6993528..3cd3d3ae 100644 --- a/R/bambu-quantify.R +++ b/R/bambu-quantify.R @@ -2,15 +2,13 @@ #' @inheritParams bambu #' @import data.table #' @noRd -bambu.quantify <- function(distTable, readClassDt, countMatrix, txid.index, GENEIDs, emParameters, +bambu.quantify <- function(readClassDt, countMatrix, incompatibleCountMatrix, txid.index, GENEIDs, emParameters, trackReads = FALSE, returnDistTable = FALSE, verbose = FALSE, isoreParameters = setIsoreParameters(NULL)) { - distTable$readCount <- countMatrix - distTable = distTable[distTable$readCount != 0,] - readClassDt$nobs = calculateEqClassCounts(distTable, readClassDt) - incompatibleCounts <- processIncompatibleCounts(distTable) + readClassDt$nobs = countMatrix[readClassDt$eqClass.match] + readClassDt$nobs[is.na(readClassDt$nobs)] = 0 compatibleCounts <- bambu.quantDT(readClassDt, emParameters = emParameters,verbose = verbose) - incompatibleCounts <- incompatibleCounts[data.table(GENEID.i = GENEIDs), on = "GENEID.i"] + incompatibleCounts <- incompatibleCountMatrix[data.table(GENEID.i = GENEIDs), on = "GENEID.i"] incompatibleCounts[is.na(counts), counts := 0] compatibleCounts <- calculateCPM(compatibleCounts, incompatibleCounts) counts <- compatibleCounts[match(txid.index, txid)] @@ -19,7 +17,7 @@ bambu.quantify <- function(distTable, readClassDt, countMatrix, txid.index, GENE counts = as(round(counts$counts,sig.digit), "sparseVector"), CPM = as(round(counts$CPM,sig.digit), "sparseVector"), fullLengthCounts = as(round(counts$fullLengthCounts,sig.digit), "sparseVector"), - uniqueCounts = as(round(counts$uniqueCounts,sig.digit), "sparseVector")) + uniqueCounts = as(round(counts$uniqueCounts,sig.digit), "sparseVector")) return(seOutput) } diff --git a/R/bambu.R b/R/bambu.R index df67bc5c..0c277372 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -190,23 +190,23 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, if (is.character(readClassList)) readClassList <- readRDS(file = readClassList) if(is.list(readClassList)) readClassList = readClassList[[1]] - readClassDist <- calculateDistTable(readClassList, annotations, isoreParameters, verbose) - readClassDt <- genEquiRCs(readClassDist, annotations, verbose) - - distTable = metadata(readClassDist)$distTable - countMatrix.matched = metadata(readClassDist)$countMatrix.matched - rm(readClassDist) + readClassDt <- genEquiRCs(metadata(readClassList)$readClassDist, annotations, verbose) + countMatrix = metadata(readClassList)$countMatrix + incompatibleCountMatrix = metadata(readClassList)$incompatibleCountMatrix + readClassDt$eqClass.match = match(readClassDt$eqClassById,metadata(readClassList)$eqClassById) + metadata(readClassList)$readClassDist = NULL rm(readClassList) gc() GENEIDs.i = as.numeric(factor(unique(mcols(annotations)$GENEID))) - countsSeCompressed <- bplapply(seq_len(ncol(countMatrix.matched)), FUN = function(i){ + countsSeCompressed <- bplapply(seq_len(ncol(countMatrix)), FUN = function(i){ print(i) - return(bambu.quantify(distTable = distTable, readClassDt = readClassDt, countMatrix = unname(countMatrix.matched[,i]), + return(bambu.quantify(readClassDt = readClassDt, countMatrix = unname(countMatrix[,i]), + incompatibleCountMatrix = data.table(GENEID.i = as.numeric(rownames(incompatibleCountMatrix)), counts = incompatibleCountMatrix[,i]), txid.index = mcols(annotations)$txid, GENEIDs = GENEIDs.i, isoreParameters = isoreParameters, emParameters = emParameters, trackReads = trackReads, returnDistTable = returnDistTable, verbose = verbose))}, BPPARAM = bpParameters) - countsSeCompressed$colnames = colnames(countMatrix.matched) + countsSeCompressed$colnames = colnames(countMatrix) countsSe <- combineCountSes(countsSeCompressed, annotations) #metadata(countsSe)$warnings = warnings diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index ae793b3a..6037ce2c 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -46,7 +46,7 @@ setIsoreParameters <- function(isoreParameters){ #' setEmParameters #' @noRd setEmParameters <- function(emParameters){ - emParameters.default <- list(degradationBias = TRUE, maxiter = 10000, + emParameters.default <- list(degradationBias = FALSE, maxiter = 10000, conv = 10^(-2), minvalue = 10^(-8), sig.digit = 5) emParameters <- updateParameters(emParameters, emParameters.default) return(emParameters) @@ -214,21 +214,17 @@ calculateDistTable <- function(readClassList, annotations, isoreParameters, verb min.primarySecondaryDistStartEnd = isoreParameters[['min.primarySecondaryDistStartEnd2']], verbose = verbose) metadata(readClassDist)$distTable <- modifyIncompatibleAssignment(metadata(readClassDist)$distTable) + #convert string gene ids into index to save memory + GENEIDs = factor(unique(mcols(annotations)$GENEID)) + GENEID.i = as.numeric(GENEIDs) + metadata(readClassDist)$distTable$GENEID.i = GENEID.i[match(metadata(readClassDist)$distTable$GENEID, GENEIDs)] + metadata(readClassDist)$distTable.incompatible = data.table(as.data.frame(metadata(readClassDist)$distTable)) %>% + filter(grepl("unidentified", annotationTxId)) %>% distinct(readClassId, .keep_all = TRUE) metadata(readClassDist)$distTable <- genEquiRCsBasedOnObservedReads(readClassDist) #match count matrix with distTable to speed up calculations metadata(readClassDist)$countMatrix.matched = metadata(readClassList)$countMatrix[metadata(readClassDist)$distTable$readClassId,] colnames(metadata(readClassDist)$countMatrix.matched) = colnames(metadata(readClassList)$countMatrix) - #convert string gene ids into index to save memory - GENEIDs = factor(unique(mcols(annotations)$GENEID)) - GENEID.i = as.numeric(GENEIDs) - metadata(readClassDist)$distTable$GENEID.i = GENEID.i[match(metadata(readClassDist)$distTable$GENEID, GENEIDs)] - #check distTable and rowData match for incompatible counts - metadata(readClassDist)$distTable$GENEID.match = - rowData(readClassDist)$geneId[match(metadata(readClassDist)$distTable$readClassId, - rownames(rowData(readClassDist)))] - metadata(readClassDist)$distTable$GENEID.match = - metadata(readClassDist)$distTable$GENEID.match == metadata(readClassDist)$distTable$GENEID return(readClassDist) } From 964fea8660f1686cb87b13419ef87e9403f73d41 Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 20 Oct 2023 13:41:09 +0800 Subject: [PATCH 062/189] Speed up addAval --- R/bambu-quantify.R | 12 +++++++- R/bambu-quantify_utilityFunctions.R | 48 +++++++++++++++++++---------- R/bambu.R | 6 ++++ 3 files changed, 48 insertions(+), 18 deletions(-) diff --git a/R/bambu-quantify.R b/R/bambu-quantify.R index 3cd3d3ae..9b094918 100644 --- a/R/bambu-quantify.R +++ b/R/bambu-quantify.R @@ -5,6 +5,7 @@ bambu.quantify <- function(readClassDt, countMatrix, incompatibleCountMatrix, txid.index, GENEIDs, emParameters, trackReads = FALSE, returnDistTable = FALSE, verbose = FALSE, isoreParameters = setIsoreParameters(NULL)) { + start.ptm <- proc.time() readClassDt$nobs = countMatrix[readClassDt$eqClass.match] readClassDt$nobs[is.na(readClassDt$nobs)] = 0 compatibleCounts <- bambu.quantDT(readClassDt, emParameters = emParameters,verbose = verbose) @@ -18,6 +19,8 @@ bambu.quantify <- function(readClassDt, countMatrix, incompatibleCountMatrix, tx CPM = as(round(counts$CPM,sig.digit), "sparseVector"), fullLengthCounts = as(round(counts$fullLengthCounts,sig.digit), "sparseVector"), uniqueCounts = as(round(counts$uniqueCounts,sig.digit), "sparseVector")) + end.ptm <- proc.time() + message("bambu.quantify ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") return(seOutput) } @@ -28,13 +31,19 @@ bambu.quantify <- function(readClassDt, countMatrix, incompatibleCountMatrix, tx bambu.quantDT <- function(readClassDt = readClassDt, emParameters = list(degradationBias = TRUE, maxiter = 10000, conv = 10^(-2), minvalue = 10^(-8)), ncore = 1, verbose = FALSE) { + start.ptm <- proc.time() rcPreOut <- addAval(readClassDt, emParameters, verbose) + end.ptm <- proc.time() + message("addAval ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") + start.ptm <- proc.time() readClassDt <- rcPreOut[[1]] outIni <- initialiseOutput(readClassDt) readClassDt <- filterTxRc(readClassDt) readClassDt <- assignGroups(readClassDt) inputRcDt <- getInputList(readClassDt) readClassDt <- split(readClassDt, by = "gene_grp_id") + end.ptm <- proc.time() + message("step2 ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") start.ptm <- proc.time() outEst <- abundance_quantification(inputRcDt, readClassDt, maxiter = emParameters[["maxiter"]], @@ -45,7 +54,8 @@ bambu.quantDT <- function(readClassDt = readClassDt, outEst <- modifyQuantOut(outEst,outIni) theta_est <- rbind(rcPreOut[[2]],outEst) theta_est <- removeDuplicates(theta_est) - return(theta_est) + end.ptm <- proc.time() + return(theta_est) } diff --git a/R/bambu-quantify_utilityFunctions.R b/R/bambu-quantify_utilityFunctions.R index f0ec3f25..5e92469e 100644 --- a/R/bambu-quantify_utilityFunctions.R +++ b/R/bambu-quantify_utilityFunctions.R @@ -188,15 +188,15 @@ createEqClassToTxMapping <- function(eqClassTable){ #' Add A matrix for total, full-length, unique #' @noRd addAval <- function(readClassDt, emParameters, verbose){ - if (is.null(readClassDt)) { - stop("Input object is missing.") - } else if (any(!(c("GENEID", "txid", "eqClassId","nobs") %in% - colnames(readClassDt)))) { - stop("Columns GENEID, txid, eqClassId, nobs, - are missing from object.") - } +# if (is.null(readClassDt)) { +# stop("Input object is missing.") +# } else if (any(!(c("GENEID", "txid", "eqClassId","nobs") %in% +# colnames(readClassDt)))) { +# stop("Columns GENEID, txid, eqClassId, nobs, +# are missing from object.") +# } ## ----step2: match to simple numbers to increase claculation efficiency - readClassDt <- simplifyNames(readClassDt) + #readClassDt <- simplifyNames(readClassDt) d_mode <- emParameters[["degradationBias"]] start.ptm <- proc.time() if (d_mode) { @@ -206,10 +206,15 @@ addAval <- function(readClassDt, emParameters, verbose){ } end.ptm <- proc.time() if (verbose) message("Finished estimate degradation bias in ", - round((end.ptm - start.ptm)[3] / 60, 1), " mins.") - readClassDt <- modifyAvaluewithDegradation_rate(readClassDt, - d_rateOut[1], d_mode = d_mode) + round((end.ptm - start.ptm)[3] / 60, 3), " mins.") +# readClassDt <- modifyAvaluewithDegradation_rate(readClassDt, +# d_rateOut[1], d_mode = d_mode) + start.ptm <- proc.time() + #readClassDt = data.table(readClassDt) removeList <- removeUnObservedGenes(readClassDt) +end.ptm <- proc.time() + message("removeUnObservedGenes ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") + start.ptm <- proc.time() readClassDt <- removeList[[1]] # keep only observed genes for estimation outList <- removeList[[2]] #for unobserved genes, set estimates to 0 readClassDt_withGeneCount <- select(readClassDt, gene_sid, eqClassId, nobs) %>% @@ -218,8 +223,14 @@ addAval <- function(readClassDt, emParameters, verbose){ mutate(K = sum(nobs), n.obs=nobs/K, nobs = NULL) %>% ## check if this is unique by eqClassId ungroup() %>% distinct() %>% - right_join(readClassDt, by = c("gene_sid","eqClassId")) %>% - data.table() + right_join(readClassDt, by = c("gene_sid","eqClassId")) +# readClassDt_withGeneCount <- readClassDt %>% +# group_by(gene_sid, eqClassId, nobs) %>% mutate(n = n(), n = replace(n,1,1)) %>% +# ungroup() %>% group_by(gene_sid) %>% +# mutate(K = sum(nobs), n.obs=(nobs)/(K)) %>% +# ungroup() + end.ptm <- proc.time() + message("dplyr ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") return(list(readClassDt_withGeneCount,outList)) } @@ -293,11 +304,14 @@ modifyAvaluewithDegradation_rate <- function(tmp, d_rate, d_mode){ #' @import data.table #' @noRd removeUnObservedGenes <- function(readClassDt){ - uoGenes <- unique(readClassDt[,.I[sum(nobs) == 0], by = gene_sid]$gene_sid) + uoGenes <- readClassDt %>% group_by(gene_sid) %>% + summarise(nobs = sum(nobs)) %>% filter(nobs == 0) %>% + select(gene_sid) %>% distinct() if (length(uoGenes) > 0) { - uo_txGeneDt <- - unique(readClassDt[(gene_sid %in% uoGenes),.(txid,gene_sid)]) - readClassDt <- readClassDt[!(gene_sid %in% uoGenes)] + readClassDt <- readClassDt %>% filter(gene_sid %in% uoGenes$gene_sid) + uo_txGeneDt <- readClassDt %>% + select(txid,gene_sid) %>% distinct() + outList <- data.table(txid = uo_txGeneDt$txid, counts = 0, fullLengthCounts = 0, diff --git a/R/bambu.R b/R/bambu.R index 0c277372..1e98f5a2 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -198,6 +198,10 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, rm(readClassList) gc() GENEIDs.i = as.numeric(factor(unique(mcols(annotations)$GENEID))) + start.ptm <- proc.time() + readClassDt <- simplifyNames(readClassDt) + readClassDt = readClassDt %>% group_by(eqClassId, gene_sid) %>% + mutate(multi_align = length(unique(txid))>1) %>% ungroup() %>% mutate(aval = 1) countsSeCompressed <- bplapply(seq_len(ncol(countMatrix)), FUN = function(i){ print(i) return(bambu.quantify(readClassDt = readClassDt, countMatrix = unname(countMatrix[,i]), @@ -206,6 +210,8 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, emParameters = emParameters, trackReads = trackReads, returnDistTable = returnDistTable, verbose = verbose))}, BPPARAM = bpParameters) + end.ptm <- proc.time() + message("Total Time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") countsSeCompressed$colnames = colnames(countMatrix) countsSe <- combineCountSes(countsSeCompressed, annotations) From 82dc9d4cfa4130603cc3993475002df5de657ee7 Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 20 Oct 2023 14:21:55 +0800 Subject: [PATCH 063/189] Make readClassDt a data.table from the start --- R/bambu-quantify.R | 6 ------ R/bambu-quantify_utilityFunctions.R | 18 ++++-------------- R/bambu.R | 3 ++- 3 files changed, 6 insertions(+), 21 deletions(-) diff --git a/R/bambu-quantify.R b/R/bambu-quantify.R index 9b094918..8dbbfacb 100644 --- a/R/bambu-quantify.R +++ b/R/bambu-quantify.R @@ -31,19 +31,13 @@ bambu.quantify <- function(readClassDt, countMatrix, incompatibleCountMatrix, tx bambu.quantDT <- function(readClassDt = readClassDt, emParameters = list(degradationBias = TRUE, maxiter = 10000, conv = 10^(-2), minvalue = 10^(-8)), ncore = 1, verbose = FALSE) { - start.ptm <- proc.time() rcPreOut <- addAval(readClassDt, emParameters, verbose) - end.ptm <- proc.time() - message("addAval ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") - start.ptm <- proc.time() readClassDt <- rcPreOut[[1]] outIni <- initialiseOutput(readClassDt) readClassDt <- filterTxRc(readClassDt) readClassDt <- assignGroups(readClassDt) inputRcDt <- getInputList(readClassDt) readClassDt <- split(readClassDt, by = "gene_grp_id") - end.ptm <- proc.time() - message("step2 ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") start.ptm <- proc.time() outEst <- abundance_quantification(inputRcDt, readClassDt, maxiter = emParameters[["maxiter"]], diff --git a/R/bambu-quantify_utilityFunctions.R b/R/bambu-quantify_utilityFunctions.R index 5e92469e..821192af 100644 --- a/R/bambu-quantify_utilityFunctions.R +++ b/R/bambu-quantify_utilityFunctions.R @@ -209,12 +209,7 @@ addAval <- function(readClassDt, emParameters, verbose){ round((end.ptm - start.ptm)[3] / 60, 3), " mins.") # readClassDt <- modifyAvaluewithDegradation_rate(readClassDt, # d_rateOut[1], d_mode = d_mode) - start.ptm <- proc.time() - #readClassDt = data.table(readClassDt) removeList <- removeUnObservedGenes(readClassDt) -end.ptm <- proc.time() - message("removeUnObservedGenes ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") - start.ptm <- proc.time() readClassDt <- removeList[[1]] # keep only observed genes for estimation outList <- removeList[[2]] #for unobserved genes, set estimates to 0 readClassDt_withGeneCount <- select(readClassDt, gene_sid, eqClassId, nobs) %>% @@ -229,8 +224,6 @@ end.ptm <- proc.time() # ungroup() %>% group_by(gene_sid) %>% # mutate(K = sum(nobs), n.obs=(nobs)/(K)) %>% # ungroup() - end.ptm <- proc.time() - message("dplyr ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") return(list(readClassDt_withGeneCount,outList)) } @@ -304,14 +297,11 @@ modifyAvaluewithDegradation_rate <- function(tmp, d_rate, d_mode){ #' @import data.table #' @noRd removeUnObservedGenes <- function(readClassDt){ - uoGenes <- readClassDt %>% group_by(gene_sid) %>% - summarise(nobs = sum(nobs)) %>% filter(nobs == 0) %>% - select(gene_sid) %>% distinct() + uoGenes <- unique(readClassDt[,.I[sum(nobs) == 0], by = gene_sid]$gene_sid) if (length(uoGenes) > 0) { - readClassDt <- readClassDt %>% filter(gene_sid %in% uoGenes$gene_sid) - uo_txGeneDt <- readClassDt %>% - select(txid,gene_sid) %>% distinct() - + uo_txGeneDt <- + unique(readClassDt[(gene_sid %in% uoGenes),.(txid,gene_sid)]) + readClassDt <- readClassDt[!(gene_sid %in% uoGenes)] outList <- data.table(txid = uo_txGeneDt$txid, counts = 0, fullLengthCounts = 0, diff --git a/R/bambu.R b/R/bambu.R index 1e98f5a2..372676e1 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -201,7 +201,8 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, start.ptm <- proc.time() readClassDt <- simplifyNames(readClassDt) readClassDt = readClassDt %>% group_by(eqClassId, gene_sid) %>% - mutate(multi_align = length(unique(txid))>1) %>% ungroup() %>% mutate(aval = 1) + mutate(multi_align = length(unique(txid))>1) %>% ungroup() %>% mutate(aval = 1) %>% + data.table() countsSeCompressed <- bplapply(seq_len(ncol(countMatrix)), FUN = function(i){ print(i) return(bambu.quantify(readClassDt = readClassDt, countMatrix = unname(countMatrix[,i]), From f59f8bd067611142a32110c3c5e55570eb2cac8d Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 27 Oct 2023 10:10:36 +0800 Subject: [PATCH 064/189] Fix bug where counts were not assigned to correct transcripts Now disttable and splitting of read class counts is done in the quant step --- R/bambu-processReads.R | 2 -- R/bambu.R | 3 ++- R/bambu_utilityFunctions.R | 4 ---- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 4d00bb91..20b6c02e 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -66,8 +66,6 @@ bambu.processReads <- function(reads, annotations, genomeSequence, metadata(readClassList)$samples = names(reads) if(demultiplexed)metadata(readClassList)$samples = metadata(readGrgList)$CB - metadata(readClassList)$readClassDist <- calculateDistTable(readClassList, annotations, isoreParameters, verbose) - readClassList = splitReadClassFiles(readClassList) # TODO return output # if (!is.null(readClass.outputDir)) { diff --git a/R/bambu.R b/R/bambu.R index 372676e1..44321fff 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -190,8 +190,9 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, if (is.character(readClassList)) readClassList <- readRDS(file = readClassList) if(is.list(readClassList)) readClassList = readClassList[[1]] + metadata(readClassList)$readClassDist <- calculateDistTable(readClassList, annotations, isoreParameters, verbose) + readClassList = splitReadClassFiles(readClassList) readClassDt <- genEquiRCs(metadata(readClassList)$readClassDist, annotations, verbose) - countMatrix = metadata(readClassList)$countMatrix incompatibleCountMatrix = metadata(readClassList)$incompatibleCountMatrix readClassDt$eqClass.match = match(readClassDt$eqClassById,metadata(readClassList)$eqClassById) metadata(readClassList)$readClassDist = NULL diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index 6037ce2c..cdce9ef4 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -221,10 +221,6 @@ calculateDistTable <- function(readClassList, annotations, isoreParameters, verb metadata(readClassDist)$distTable.incompatible = data.table(as.data.frame(metadata(readClassDist)$distTable)) %>% filter(grepl("unidentified", annotationTxId)) %>% distinct(readClassId, .keep_all = TRUE) metadata(readClassDist)$distTable <- genEquiRCsBasedOnObservedReads(readClassDist) - #match count matrix with distTable to speed up calculations - metadata(readClassDist)$countMatrix.matched = - metadata(readClassList)$countMatrix[metadata(readClassDist)$distTable$readClassId,] - colnames(metadata(readClassDist)$countMatrix.matched) = colnames(metadata(readClassList)$countMatrix) return(readClassDist) } From 9e5930f83fb6da6b796f2e5e1ede07c150d43620 Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 27 Oct 2023 10:19:39 +0800 Subject: [PATCH 065/189] Missed line --- R/bambu.R | 1 + 1 file changed, 1 insertion(+) diff --git a/R/bambu.R b/R/bambu.R index 44321fff..3e96777e 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -193,6 +193,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, metadata(readClassList)$readClassDist <- calculateDistTable(readClassList, annotations, isoreParameters, verbose) readClassList = splitReadClassFiles(readClassList) readClassDt <- genEquiRCs(metadata(readClassList)$readClassDist, annotations, verbose) + countMatrix = metadata(readClassList)$countMatrix incompatibleCountMatrix = metadata(readClassList)$incompatibleCountMatrix readClassDt$eqClass.match = match(readClassDt$eqClassById,metadata(readClassList)$eqClassById) metadata(readClassList)$readClassDist = NULL From 1b664b168bc8880e74393fe64695dce1a27be7d3 Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 27 Oct 2023 13:50:25 +0800 Subject: [PATCH 066/189] Tidy up --- R/bambu.R | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 3e96777e..5c41a215 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -196,17 +196,16 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, countMatrix = metadata(readClassList)$countMatrix incompatibleCountMatrix = metadata(readClassList)$incompatibleCountMatrix readClassDt$eqClass.match = match(readClassDt$eqClassById,metadata(readClassList)$eqClassById) - metadata(readClassList)$readClassDist = NULL rm(readClassList) gc() GENEIDs.i = as.numeric(factor(unique(mcols(annotations)$GENEID))) - start.ptm <- proc.time() readClassDt <- simplifyNames(readClassDt) readClassDt = readClassDt %>% group_by(eqClassId, gene_sid) %>% mutate(multi_align = length(unique(txid))>1) %>% ungroup() %>% mutate(aval = 1) %>% data.table() + start.ptm <- proc.time() countsSeCompressed <- bplapply(seq_len(ncol(countMatrix)), FUN = function(i){ - print(i) + #print(i) return(bambu.quantify(readClassDt = readClassDt, countMatrix = unname(countMatrix[,i]), incompatibleCountMatrix = data.table(GENEID.i = as.numeric(rownames(incompatibleCountMatrix)), counts = incompatibleCountMatrix[,i]), txid.index = mcols(annotations)$txid, GENEIDs = GENEIDs.i, isoreParameters = isoreParameters, From 0e246414dca9ae5827f6c304f5ee733b9abf71af Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 27 Oct 2023 14:53:45 +0800 Subject: [PATCH 067/189] Fix bug where reads were missing after splitReadClassFile --- R/bambu-processReads.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 20b6c02e..67bb4cf3 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -248,7 +248,7 @@ seqlevelCheckReadsAnnotation <- function(reads, annotations){ splitReadClassFiles = function(readClassFile){ distTable = metadata(metadata(readClassFile)$readClassDist)$distTable eqClasses = distTable %>% group_by(eqClassById) %>% - distinct(eqClassById, readCount,GENEID, .keep_all = TRUE) + distinct(eqClassById, readCount,GENEID, totalWidth, firstExonWidth, .keep_all = TRUE) eqClasses$sampleIDs = rowData(readClassFile)$sampleIDs[match(eqClasses$readClassId, rownames(readClassFile))] eqClasses = eqClasses %>% summarise(nobs = sum(readCount), sampleIDs = list(unlist(sampleIDs))) From 1f22942a29a8f59a205c9c6d51e6eedd974ac876 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 31 Oct 2023 12:57:25 +0800 Subject: [PATCH 068/189] Add in helper splitReadClassByRC for old functionality --- R/bambu-processReads.R | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 67bb4cf3..fa538c85 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -147,8 +147,8 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, } ## add ### - if (isTRUE(demultiplexed)){ - cellBarcodeAssign <- tibble(index = mcols(readGrgList)$id, CB = mcols(readGrgList)$CB) %>% nest(.by = "CB") + #if (isTRUE(demultiplexed)){ + # cellBarcodeAssign <- tibble(index = mcols(readGrgList)$id, CB = mcols(readGrgList)$CB) %>% nest(.by = "CB") # if (!dir.exists("CB")){ # dir.create("CB") @@ -158,7 +158,7 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, # invisible(lapply(seq(nrow(cellBarcodeAssign)), # function(x){saveRDS(readGrgList[pull(cellBarcodeAssign$data[[x]])], paste0("CB/", cellBarcodeAssign$CB[[x]],".rds"))})) - } + #} return(readGrgList) } @@ -284,3 +284,14 @@ splitReadClassFiles = function(readClassFile){ metadata(readClassFile)$incompatibleCountMatrix = counts.incompatible return(readClassFile ) } + +splitReadClassFilesByRC = function(readClassFile){ + counts.table = lapply(rowData(readClassFile)$sampleIDs, FUN = function(x){table(x)}) + counts = sparseMatrix( + i = rep(seq_along(counts.table), lengths(counts.table)), + j = as.numeric(names(unlist(counts.table))), + x = unlist(counts.table), + dims = c(nrow(readClassFile), length(metadata(readClassFile)$samples))) + return(counts) +} + From e890af933ef999ae8b1fd61d35a04b9bb5a4681a Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 1 Nov 2023 11:39:39 +0800 Subject: [PATCH 069/189] Fix bug caused by different sorting of unspliced reads --- R/bambu-processReads_utilityConstructReadClasses.R | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/R/bambu-processReads_utilityConstructReadClasses.R b/R/bambu-processReads_utilityConstructReadClasses.R index 8058ac09..e73aa2da 100644 --- a/R/bambu-processReads_utilityConstructReadClasses.R +++ b/R/bambu-processReads_utilityConstructReadClasses.R @@ -251,12 +251,9 @@ constructUnsplicedReadClasses <- function(reads.singleExon, annotations, mutate(id = mcols(reads.singleExon)$id, sampleID = mcols(reads.singleExon)$sampleID) %>% group_by(seqnames,start,end,strand) %>% - summarise(n=n(), id = list(id), sampleID = list(sampleID)) %>% + summarise(counts=n(), id = list(id), sampleID = list(sampleID)) %>% as.data.frame() - reads.singleExon = unique(reads.singleExon) - mcols(reads.singleExon)$counts <- counts$n - mcols(reads.singleExon)$id <- counts$id - mcols(reads.singleExon)$sampleID <- counts$sampleID + reads.singleExon = GRanges(counts) rcUnsplicedAnnotation <- getUnsplicedReadClassByReference( granges = reads.singleExon, grangesReference = referenceExons, From 1ae237c2b15fb51e7fcdf4a68095835c07964c06 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 14 Nov 2023 18:18:42 +0800 Subject: [PATCH 070/189] Stop incompatibleCounts from being converted away from sparseMatrix --- R/bambu_utilityFunctions.R | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index cdce9ef4..7df58f17 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -239,9 +239,7 @@ combineCountSes <- function(countsSe, annotations){ if(all(countsMat==0)){return(NULL)} colnames(countsMat) <- sampleNames if (k == "incompatibleCounts"){ - countsMat <- data.table(as.data.frame(as.matrix(countsMat)) %>% - mutate(GENEID = unique(mcols(annotations)$GENEID)) %>% - select(GENEID, everything())) + rownames(countsMat) = unique(mcols(annotations)$GENEID) } return(countsMat) }) From 85292f22ee35cea14e26c58bfb43257305968cee Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 14 Nov 2023 18:49:56 +0800 Subject: [PATCH 071/189] make transcriptToGene compatible with sparseMatrix --- R/transcriptToGeneExpression.R | 47 ++++++++-------------------------- 1 file changed, 11 insertions(+), 36 deletions(-) diff --git a/R/transcriptToGeneExpression.R b/R/transcriptToGeneExpression.R index b145a2ac..f517633a 100644 --- a/R/transcriptToGeneExpression.R +++ b/R/transcriptToGeneExpression.R @@ -11,30 +11,18 @@ #' )) #' transcriptToGeneExpression(se) transcriptToGeneExpression <- function(se) { - counts <- as.data.table(as.matrix(assays(se)$counts), keep.rownames = TRUE) + counts <- assays(se)$counts runnames <- colnames(counts)[-1] - colnames(counts)[-1] <- rename_duplicatedNames(runnames) - colData(se)@rownames <- rename_duplicatedNames(colData(se)@rownames) - counts <- melt(counts, id.vars = "rn", measure.vars = colnames(counts)[-1]) - setnames(counts, "rn", "TXNAME") rowDataSe <- as.data.table(rowData(se)) - counts <- rowDataSe[, .(TXNAME, GENEID)][counts, on = "TXNAME"] + counts = fac2sparse(rowData(se)$GENEID) %*% counts incompatibleCounts <- metadata(se)$incompatibleCounts - incompatibleCounts[, TXNAME := "incompatible"] - counts_incompatible <- melt(incompatibleCounts, id.vars = c("GENEID","TXNAME"), - measure.vars = setdiff(colnames(incompatibleCounts), c("GENEID","TXNAME"))) - # GENEID, TXNAME, variable, value - counts <- rbind(counts, counts_incompatible[variable %in% unique(counts$variable)]) - counts[, valueGene := sum(value), by = list(variable, GENEID)] - counts[, valueGeneCPM := valueGene / max(sum(value), 1) * 10^6, - by = list(variable)] + incompatibleCounts = incompatibleCounts[match(rownames(counts), rownames(incompatibleCounts)),] + counts = counts + incompatibleCounts + counts.total = colSums(counts) + counts.total[counts.total==0] = 1 + counts.CPM = counts/counts.total * 10^6 - ## counts - counts_gene <- dcast(unique(counts[, .(GENEID, variable, - valueGene)]), GENEID ~ variable, value.var = "valueGene") - counts_gene_CPM <- dcast(unique(counts[, .(GENEID, variable, - valueGeneCPM)]), GENEID ~ variable, value.var = "valueGeneCPM") ## geneRanges exByGene <- reducedRangesByGenes(rowRanges(se)) if ("txClassDescription" %in% colnames(rowDataSe)) { @@ -45,29 +33,16 @@ transcriptToGeneExpression <- function(se) { newGeneClass)])[match(names(exByGene), GENEID)] } ## SE - counts_gene <- setDF(counts_gene) - RowNames <- counts_gene$GENEID - rownames(counts_gene) <- RowNames - counts_gene_CPM <- setDF(counts_gene_CPM) - rownames(counts_gene_CPM) <- RowNames - ColNames <- colnames(counts_gene)[-1] + RowNames <- rownames(counts) + ColNames <- colnames(counts) ColData <- colData(se) ColData@rownames <- ColNames ColData@listData$name <- ColNames seOutput <- SummarizedExperiment( - assays = SimpleList(counts = as.matrix(counts_gene[, -1, drop = FALSE], - ncol = length(ColNames), - dimnames = list(RowNames, ColNames)), - CPM = as.matrix(counts_gene_CPM[match(RowNames, - counts_gene_CPM$GENEID), -1, drop = FALSE], ncol = length(ColNames), - dimnames = list(RowNames, ColNames))), + assays = SimpleList(counts = counts, + CPM = counts.CPM), rowRanges = exByGene[RowNames], colData = ColData) - if(is(assays(se)$counts, "sparseMatrix")) { - assays(seOutput)$counts <- as(assays(seOutput)$counts, "sparseMatrix") - assays(seOutput)$CPM <- as(assays(seOutput)$CPM, "sparseMatrix") - } - return(seOutput) } \ No newline at end of file From 9ab07675a479deea436b9a60e62e888c45392f3e Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 15 Nov 2023 16:15:32 +0800 Subject: [PATCH 072/189] Enable Bambu to restart with readClassDt to help with R hogging memory --- R/bambu.R | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 5c41a215..87064153 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -137,9 +137,9 @@ #' @export bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, opt.discovery = NULL, opt.em = NULL, rcOutDir = NULL, discovery = TRUE, - quant = TRUE, stranded = FALSE, ncore = 1, yieldSize = NULL, + assignDist = TRUE, quant = TRUE, stranded = FALSE, ncore = 1, yieldSize = NULL, trackReads = FALSE, returnDistTable = FALSE, lowMemory = FALSE, - fusionMode = FALSE, verbose = FALSE, demultiplexed = FALSE) { + fusionMode = FALSE, verbose = FALSE, demultiplexed = FALSE, quantData = NULL) { if(is.null(annotations)) { annotations = GRangesList() } else annotations <- checkInputs(annotations, reads, readClass.outputDir = rcOutDir, genomeSequence = genome) @@ -173,41 +173,45 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, } #warnings = handleWarnings(readClassList, verbose) - if (!discovery & !quant) return(readClassList) + if (!discovery & !assignDist & !quant) return(readClassList) if (discovery) { message("--- Start extending annotations ---") annotations <- bambu.extendAnnotations(readClassList, annotations, NDR, isoreParameters, stranded, bpParameters, fusionMode, verbose) metadata(annotations)$warnings = warnings - if (!quant) return(annotations) + if (!quant & !assignDist) return(annotations) } - if (quant) { - message("--- Start isoform quantification ---") - if(length(annotations)==0) stop("No valid annotations, if running - de novo please try less stringent parameters") - + if(assignDist){ + message("--- Start calculate equivilance classes ---") if (is.character(readClassList)) readClassList <- readRDS(file = readClassList) if(is.list(readClassList)) readClassList = readClassList[[1]] metadata(readClassList)$readClassDist <- calculateDistTable(readClassList, annotations, isoreParameters, verbose) readClassList = splitReadClassFiles(readClassList) - readClassDt <- genEquiRCs(metadata(readClassList)$readClassDist, annotations, verbose) - countMatrix = metadata(readClassList)$countMatrix - incompatibleCountMatrix = metadata(readClassList)$incompatibleCountMatrix - readClassDt$eqClass.match = match(readClassDt$eqClassById,metadata(readClassList)$eqClassById) - rm(readClassList) - gc() - GENEIDs.i = as.numeric(factor(unique(mcols(annotations)$GENEID))) - readClassDt <- simplifyNames(readClassDt) - readClassDt = readClassDt %>% group_by(eqClassId, gene_sid) %>% + quantData = list() + quantData$readClassDt <- genEquiRCs(metadata(readClassList)$readClassDist, annotations, verbose) + quantData$countMatrix = metadata(readClassList)$countMatrix + quantData$incompatibleCountMatrix = metadata(readClassList)$incompatibleCountMatrix + quantData$readClassDt$eqClass.match = match(quantData$readClassDt$eqClassById,metadata(readClassList)$eqClassById) + quantData$readClassDt <- simplifyNames(quantData$readClassDt) + quantData$readClassDt = quantData$readClassDt %>% group_by(eqClassId, gene_sid) %>% mutate(multi_align = length(unique(txid))>1) %>% ungroup() %>% mutate(aval = 1) %>% data.table() + if (!quant) return(quantData) + } + + if (quant) { + message("--- Start isoform quantification ---") + if(length(annotations)==0) stop("No valid annotations, if running + de novo please try less stringent parameters") + if(is.null(quantData)) stop("quantData must be provided or assignDist = TRUE") + GENEIDs.i = as.numeric(factor(unique(mcols(annotations)$GENEID))) start.ptm <- proc.time() countsSeCompressed <- bplapply(seq_len(ncol(countMatrix)), FUN = function(i){ #print(i) - return(bambu.quantify(readClassDt = readClassDt, countMatrix = unname(countMatrix[,i]), - incompatibleCountMatrix = data.table(GENEID.i = as.numeric(rownames(incompatibleCountMatrix)), counts = incompatibleCountMatrix[,i]), + return(bambu.quantify(readClassDt = quantData$readClassDt, countMatrix = unname(quantData$countMatrix[,i]), + incompatibleCountMatrix = data.table(GENEID.i = as.numeric(rownames(quantData$incompatibleCountMatrix)), counts = quantData$incompatibleCountMatrix[,i]), txid.index = mcols(annotations)$txid, GENEIDs = GENEIDs.i, isoreParameters = isoreParameters, emParameters = emParameters, trackReads = trackReads, returnDistTable = returnDistTable, verbose = verbose))}, From ff69eac1ddd60db9f5b6444582a3f1b30915ebcf Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 15 Nov 2023 17:57:43 +0800 Subject: [PATCH 073/189] fix missing reference due to change --- R/bambu.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 87064153..e1dea8a7 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -208,7 +208,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, if(is.null(quantData)) stop("quantData must be provided or assignDist = TRUE") GENEIDs.i = as.numeric(factor(unique(mcols(annotations)$GENEID))) start.ptm <- proc.time() - countsSeCompressed <- bplapply(seq_len(ncol(countMatrix)), FUN = function(i){ + countsSeCompressed <- bplapply(seq_len(ncol(quantData$countMatrix)), FUN = function(i){ #print(i) return(bambu.quantify(readClassDt = quantData$readClassDt, countMatrix = unname(quantData$countMatrix[,i]), incompatibleCountMatrix = data.table(GENEID.i = as.numeric(rownames(quantData$incompatibleCountMatrix)), counts = quantData$incompatibleCountMatrix[,i]), @@ -218,7 +218,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, BPPARAM = bpParameters) end.ptm <- proc.time() message("Total Time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") - countsSeCompressed$colnames = colnames(countMatrix) + countsSeCompressed$colnames = colnames(quantData$countMatrix) countsSe <- combineCountSes(countsSeCompressed, annotations) #metadata(countsSe)$warnings = warnings From e6fa212a5dd6dbf6dea2e2a526ded92a6fd8eb48 Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 1 Dec 2023 11:01:32 +0800 Subject: [PATCH 074/189] Resolve lack of incompatible rcs better --- R/bambu_utilityFunctions.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index 7df58f17..6351071d 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -236,7 +236,7 @@ combineCountSes <- function(countsSe, annotations){ j = unlist(lapply(seq_along(countsVecList), function(j){rep(j, length(countsVecList[[j]]@i))})), x = unlist(lapply(countsVecList, function(j){j@x})), dims = c(length(countsVecList[[1]]), length(countsVecList))) - if(all(countsMat==0)){return(NULL)} + if(all(is.na(countsMat))){countsMat = matrix(0,nrow(countsMat),ncol(countsMat))} colnames(countsMat) <- sampleNames if (k == "incompatibleCounts"){ rownames(countsMat) = unique(mcols(annotations)$GENEID) From a1de0dc335f237d34a99c92bd9ad65021637dc64 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 4 Dec 2023 11:12:36 +0800 Subject: [PATCH 075/189] Insert missing fix for assignGeneIds --- ...processReads_utilityConstructReadClasses.R | 67 ++++++++++--------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/R/bambu-processReads_utilityConstructReadClasses.R b/R/bambu-processReads_utilityConstructReadClasses.R index e73aa2da..fbcc72c5 100644 --- a/R/bambu-processReads_utilityConstructReadClasses.R +++ b/R/bambu-processReads_utilityConstructReadClasses.R @@ -386,13 +386,15 @@ assignGeneIds <- function(grl, annotations, min.exonOverlap = 10, fusionMode = } mcols(grl)$GENEID[strandedRanges] <- assignGeneIdsByReference(grl[strandedRanges], annotations, min.exonOverlap = min.exonOverlap, - fusionMode = fusionMode) + fusionMode = fusionMode) #iteratively assign gene ids for stranded granges newGeneSet <- is.na(mcols(grl)$GENEID) & strandedRanges - referenceGeneSet <- !is.na(mcols(grl)$GENEID) & strandedRanges - mcols(grl)$GENEID[newGeneSet] <- assignGeneIdsByReference(grl[newGeneSet], grl[referenceGeneSet], - min.exonOverlap = min.exonOverlap, - fusionMode = FALSE) # fusion assignment is only done based on original annotations + if(sum(newGeneSet != 0)){ + referenceGeneSet <- !is.na(mcols(grl)$GENEID) & strandedRanges + mcols(grl)$GENEID[newGeneSet] <- assignGeneIdsByReference(grl[newGeneSet], grl[referenceGeneSet], + min.exonOverlap = min.exonOverlap, + fusionMode = FALSE) # fusion assignment is only done based on original annotations + } chainCount <- 1 # first iteration is outside of while loop while(any(!is.na(mcols(grl)$GENEID[newGeneSet])) & chainCount < maxChainIteration) { referenceGeneSet <- newGeneSet & !is.na(mcols(grl)$GENEID) & strandedRanges @@ -410,13 +412,13 @@ assignGeneIds <- function(grl, annotations, min.exonOverlap = 10, fusionMode = mcols(grl)$GENEID[!strandedRanges] <- assignGeneIdsByReference(grl[!strandedRanges], grl[!is.na(mcols(grl)$GENEID)], min.exonOverlap = min.exonOverlap, - fusionMode = FALSE) + fusionMode = FALSE) if(any(is.na(mcols(grl)$GENEID)) & length(annotations)>0) { newGeneSet <- is.na(mcols(grl)$GENEID) mcols(grl)$GENEID[newGeneSet] <- assignGeneIdsByReference(grl[newGeneSet], annotations, min.exonOverlap = min.exonOverlap, - fusionMode = FALSE) + fusionMode = FALSE) } if(any(is.na(mcols(grl)$GENEID))) { @@ -444,32 +446,31 @@ assignGeneIdsByReference <- function(grl, annotations, min.exonOverlap = 10, uniqueHits <- which(queryHits(ov) %in% which(countQueryHits(ov)==1)) geneIds[queryHits(ov)[uniqueHits]] <- names(geneRanges)[subjectHits(ov)[uniqueHits]] - - ## next for non unique hits select one gene (maximum overlap) - multiHits <- which(queryHits(ov) %in% which(countQueryHits(ov)>1)) - expandedRanges <- expandRangesList(ranges(grl[queryHits(ov)[multiHits]]), - ranges(geneRanges[subjectHits(ov)[multiHits]])) - rangeIntersect <- pintersect(expandedRanges, - mcols(expandedRanges)$matchRng, resolve.empty = 'start.x') - intersectById <- tapply(width(rangeIntersect), - mcols(expandedRanges)$IdMap, sum) - - filteredMultiHits <- as_tibble(ov[multiHits]) %>% - mutate(intersectWidth = intersectById) - if(fusionMode) { - filteredMultiHits <- filteredMultiHits %>% - filter(intersectWidth>min.exonOverlap) %>% - mutate(geneid = names(geneRanges)[subjectHits]) %>% distinct() %>% - group_by(queryHits) %>% summarise(geneid = paste(geneid, collapse=':')) - geneIds[filteredMultiHits$queryHits] <- filteredMultiHits$geneid - - } else { - filteredMultiHits <- filteredMultiHits %>% - group_by(queryHits) %>% arrange(desc(intersectWidth)) %>% - dplyr::slice(1) - geneIds[filteredMultiHits$queryHits] <- - names(geneRanges)[filteredMultiHits$subjectHits] - } + if(length(ov)>0){ + ## next for non unique hits select one gene (maximum overlap) + multiHits <- which(queryHits(ov) %in% which(countQueryHits(ov)>1)) + rangeIntersect= intersect(ranges(grl[queryHits(ov)[multiHits]]), + ranges(geneRanges[subjectHits(ov)[multiHits]])) + filteredMultiHits = data.frame(queryHits = queryHits(ov)[multiHits], + intersectWidth = sum(width(rangeIntersect)), + subjectHits = subjectHits(ov)[multiHits]) %>% + group_by(queryHits) %>% summarise(subjectHits = subjectHits[which.max(intersectWidth)], + intersectWidth = max(intersectWidth)) + if(fusionMode) { + filteredMultiHits <- filteredMultiHits %>% + filter(intersectWidth>min.exonOverlap) %>% + mutate(geneid = names(geneRanges)[subjectHits]) %>% distinct() %>% + group_by(queryHits) %>% summarise(geneid = paste(geneid, collapse=':')) + geneIds[filteredMultiHits$queryHits] <- filteredMultiHits$geneid + + } else { + filteredMultiHits <- filteredMultiHits %>% + group_by(queryHits) %>% arrange(desc(intersectWidth)) %>% + dplyr::slice(1) + geneIds[filteredMultiHits$queryHits] <- + names(geneRanges)[filteredMultiHits$subjectHits] + } + } return(geneIds) } From 98c37041419c9f6bb094e0619b8d333efaa7e79c Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 12 Dec 2023 15:34:37 +0800 Subject: [PATCH 076/189] reallow deg bias --- R/bambu-quantify_utilityFunctions.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/bambu-quantify_utilityFunctions.R b/R/bambu-quantify_utilityFunctions.R index 821192af..dbcaae63 100644 --- a/R/bambu-quantify_utilityFunctions.R +++ b/R/bambu-quantify_utilityFunctions.R @@ -201,14 +201,14 @@ addAval <- function(readClassDt, emParameters, verbose){ start.ptm <- proc.time() if (d_mode) { d_rateOut <- calculateDegradationRate(readClassDt) + readClassDt <- modifyAvaluewithDegradation_rate(readClassDt, + d_rateOut[1], d_mode = d_mode) }else{ d_rateOut <- rep(NA,2) } end.ptm <- proc.time() if (verbose) message("Finished estimate degradation bias in ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") -# readClassDt <- modifyAvaluewithDegradation_rate(readClassDt, -# d_rateOut[1], d_mode = d_mode) removeList <- removeUnObservedGenes(readClassDt) readClassDt <- removeList[[1]] # keep only observed genes for estimation outList <- removeList[[2]] #for unobserved genes, set estimates to 0 From a8063cb363b05e01e17dcb0d0c3ff9d9237e1fe9 Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 20 Dec 2023 11:49:05 +0800 Subject: [PATCH 077/189] Reenable writeBambuOutput --- R/readWrite.R | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/R/readWrite.R b/R/readWrite.R index b317267d..83e171c0 100644 --- a/R/readWrite.R +++ b/R/readWrite.R @@ -35,19 +35,7 @@ writeBambuOutput <- function(se, path, prefix = "") { writeCountsOutput(se, varname=d, feature='transcript',outdir, prefix) } - - seGene <- transcriptToGeneExpression(se[,1]) - - for (i in seq(ceiling(length(colnames(se)) / 100))){ - if (i == ceiling(length(colnames(se)) / 100)){ - seGene <- cbind(seGene, transcriptToGeneExpression(se[,(100*i-99):length(colnames(se))])) - } else{ - seGene <- cbind(seGene, transcriptToGeneExpression(se[,(100*i-99):(100*i)])) - } - } - - seGene <- seGene[,-1] - + seGene <- transcriptToGeneExpression(se) writeCountsOutput(seGene, varname='counts', feature='gene',outdir, prefix) } } From 22702d480eb626a3e98d779dcf15a8acd89695e8 Mon Sep 17 00:00:00 2001 From: lingminhao Date: Fri, 5 Jan 2024 14:59:21 +0800 Subject: [PATCH 078/189] different bam input for CB --- R/prepareDataFromBam.R | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index f2e7cd26..e1df4fab 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -29,15 +29,20 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, use.n umi <- c() if(demultiplexed) use.names = TRUE while (isIncomplete(bf)) { - readGrgList[[counter]] <- - grglist(readGAlignments(bf, - param = ScanBamParam(flag = - scanBamFlag(isSecondaryAlignment = FALSE)), - use.names = use.names)) + ### add ### + alignmentInfo <- readGAlignments(bf, param = ScanBamParam(tag = c("BC", "UG"), + flag = scanBamFlag(isSecondaryAlignment = FALSE)), + use.names = use.names) + ### add ### + readGrgList[[counter]] <-grglist(alignmentInfo) ### add ### if (isTRUE(demultiplexed)){ - mcols(readGrgList[[counter]])$CB <- substr(names(readGrgList[[counter]]), 1, 16) - mcols(readGrgList[[counter]])$UMI <- substr(names(readGrgList[[counter]]), 18, 29) + mcols(readGrgList[[counter]])$CB <- ifelse(!is.na(mcols(alignmentInfo)$BC), mcols(alignmentInfo)$BC, + substr(names(readGrgList[[counter]]), 1, 16)) + + mcols(readGrgList[[counter]])$UMI <- ifelse(!is.na(mcols(alignmentInfo)$UG), mcols(alignmentInfo)$UG, + substr(names(readGrgList[[counter]]), 18, 29)) + names(readGrgList[[counter]]) <- NULL cells <- unique(c(cells, mcols(readGrgList[[counter]])$CB)) mcols(readGrgList[[counter]])$CB <- factor(mcols(readGrgList[[counter]])$CB, levels = cells) From 3d2b79438a21b827f66c266d1f124ce74cf5b9d1 Mon Sep 17 00:00:00 2001 From: lingminhao Date: Tue, 16 Jan 2024 18:24:19 +0800 Subject: [PATCH 079/189] update quantification output file format --- R/readWrite.R | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/R/readWrite.R b/R/readWrite.R index 83e171c0..318da9f0 100644 --- a/R/readWrite.R +++ b/R/readWrite.R @@ -34,9 +34,22 @@ writeBambuOutput <- function(se, path, prefix = "") { for(d in names(assays(se))){ writeCountsOutput(se, varname=d, feature='transcript',outdir, prefix) + print(d) } seGene <- transcriptToGeneExpression(se) writeCountsOutput(seGene, varname='counts', feature='gene',outdir, prefix) + + txANDGenes <- data.table(as.data.frame(rowData(se))[,c("TXNAME","GENEID")]) + utils::write.table(txANDGenes, file = paste0(outdir, "txANDgenes.tsv"), + sep = "\t", quote = FALSE, row.names = FALSE, col.names = FALSE) + utils::write.table(paste0(colnames(se), "-1"), file = paste0(outdir, "barcodes.tsv"), quote = FALSE, row.names = FALSE, col.names = FALSE) + utils::write.table(names(seGene), file = paste0(outdir, "genes.tsv"), + sep = "\t", quote = FALSE, row.names = FALSE, col.names = FALSE) + + R.utils::gzip(paste0(outdir, "txANDgenes.tsv")) + R.utils::gzip(paste0(outdir, "barcodes.tsv")) + R.utils::gzip(paste0(outdir, "genes.tsv")) + } } @@ -46,8 +59,8 @@ writeBambuOutput <- function(se, path, prefix = "") { writeCountsOutput <- function(se, varname = "counts", feature = "transcript", outdir, prefix){ - estimatesfn <- paste(outdir, prefix, varname,"_",feature,".txt", sep = "") if(!is(assays(se)[[varname]], "sparseMatrix")){ + estimatesfn <- paste(outdir, prefix, varname,"_",feature,".txt", sep = "") estimates <- data.table(as.data.frame(assays(se)[[varname]]), keep.rownames = TRUE) if(feature == "transcript"){ @@ -63,16 +76,14 @@ writeCountsOutput <- function(se, varname = "counts", } else{ estimates <- assays(se)[[varname]] if (feature == "transcript"){ + estimatesfn <- paste(outdir, prefix, varname,"_",feature,".mtx", sep = "") Matrix::writeMM(estimates, estimatesfn) - geneIDs <- data.table(as.data.frame(rowData(se))[,c("TXNAME","GENEID")]) - utils::write.table(geneIDs, file = paste0(outdir, "txANDgenes.txt"), - sep = "\t", quote = FALSE, row.names = FALSE, col.names = FALSE) - utils::write.table(colnames(se), file = paste0(outdir, "barcodes.txt"), quote = FALSE, row.names = FALSE, col.names = FALSE) + R.utils::gzip(estimatesfn) } else{ + estimatesfn <- paste(outdir, prefix, varname,"_",feature,".mtx", sep = "") Matrix::writeMM(estimates, estimatesfn) - utils::write.table(names(se), file = paste0(outdir, "genes.txt"), - sep = "\t", quote = FALSE, row.names = FALSE, col.names = FALSE) + R.utils::gzip(estimatesfn) } } } From 74532cf33509de51ede23cf698b92b5dbc382d16 Mon Sep 17 00:00:00 2001 From: lingminhao Date: Fri, 19 Jan 2024 16:56:48 +0800 Subject: [PATCH 080/189] added spatial location information --- R/bambu.R | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/R/bambu.R b/R/bambu.R index e1dea8a7..a67a7397 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -139,7 +139,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, opt.discovery = NULL, opt.em = NULL, rcOutDir = NULL, discovery = TRUE, assignDist = TRUE, quant = TRUE, stranded = FALSE, ncore = 1, yieldSize = NULL, trackReads = FALSE, returnDistTable = FALSE, lowMemory = FALSE, - fusionMode = FALSE, verbose = FALSE, demultiplexed = FALSE, quantData = NULL) { + fusionMode = FALSE, verbose = FALSE, demultiplexed = FALSE, spatial = NULL, quantData = NULL) { if(is.null(annotations)) { annotations = GRangesList() } else annotations <- checkInputs(annotations, reads, readClass.outputDir = rcOutDir, genomeSequence = genome) @@ -226,6 +226,10 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, # generateReadToTranscriptMap(readClass, metadata(readClassDist)$distTable, # annotations) # if (returnDistTable) metadata(seOutput)$distTable = metadata(readClassDist)$distTable + + colData(countsSe) <- DataFrame(read.table(gzfile(spatial), col.names = c("Barcode", "x_coordinate", "y_coordinate")) %>% + filter(Barcode %in% colnames(countsSe)), row.names = colnames(countsSe)) + return(countsSe) } } From 77dae23db6292a7148e8deb5d0273e11b5ff363a Mon Sep 17 00:00:00 2001 From: lingminhao Date: Tue, 23 Jan 2024 14:25:50 +0800 Subject: [PATCH 081/189] updated gzfile function --- R/bambu.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/bambu.R b/R/bambu.R index a67a7397..03dc00c1 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -227,7 +227,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, # annotations) # if (returnDistTable) metadata(seOutput)$distTable = metadata(readClassDist)$distTable - colData(countsSe) <- DataFrame(read.table(gzfile(spatial), col.names = c("Barcode", "x_coordinate", "y_coordinate")) %>% + colData(countsSe) <- DataFrame(read.table(R.utils::gzfile(spatial), col.names = c("Barcode", "x_coordinate", "y_coordinate")) %>% filter(Barcode %in% colnames(countsSe)), row.names = colnames(countsSe)) return(countsSe) From c78c793d9bdfaaccd0d51aae9b03aa978c31c409 Mon Sep 17 00:00:00 2001 From: lingminhao Date: Tue, 23 Jan 2024 17:23:18 +0800 Subject: [PATCH 082/189] revert changes in gzfile --- R/bambu.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/bambu.R b/R/bambu.R index 03dc00c1..a67a7397 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -227,7 +227,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, # annotations) # if (returnDistTable) metadata(seOutput)$distTable = metadata(readClassDist)$distTable - colData(countsSe) <- DataFrame(read.table(R.utils::gzfile(spatial), col.names = c("Barcode", "x_coordinate", "y_coordinate")) %>% + colData(countsSe) <- DataFrame(read.table(gzfile(spatial), col.names = c("Barcode", "x_coordinate", "y_coordinate")) %>% filter(Barcode %in% colnames(countsSe)), row.names = colnames(countsSe)) return(countsSe) From 95d883066d9aaf7cf09a803683a42e502d999ec0 Mon Sep 17 00:00:00 2001 From: lingminhao Date: Tue, 23 Jan 2024 23:00:42 +0800 Subject: [PATCH 083/189] added ifelse test for spatial --- R/bambu.R | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index a67a7397..c4332ca7 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -227,8 +227,10 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, # annotations) # if (returnDistTable) metadata(seOutput)$distTable = metadata(readClassDist)$distTable - colData(countsSe) <- DataFrame(read.table(gzfile(spatial), col.names = c("Barcode", "x_coordinate", "y_coordinate")) %>% - filter(Barcode %in% colnames(countsSe)), row.names = colnames(countsSe)) + if(!is.null(spatial)){ + colData(countsSe) <- DataFrame(read.table(gzfile(spatial), col.names = c("Barcode", "x_coordinate", "y_coordinate")) %>% + filter(Barcode %in% colnames(countsSe)), row.names = colnames(countsSe)) + } return(countsSe) } From 2fd51f8b872fee782b8b2f1a20a69801e84fb746 Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 2 Feb 2024 10:33:40 +0800 Subject: [PATCH 084/189] Enable fusion mode again --- ...processReads_utilityConstructReadClasses.R | 46 +++++++++++++++++-- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/R/bambu-processReads_utilityConstructReadClasses.R b/R/bambu-processReads_utilityConstructReadClasses.R index fbcc72c5..1972dab5 100644 --- a/R/bambu-processReads_utilityConstructReadClasses.R +++ b/R/bambu-processReads_utilityConstructReadClasses.R @@ -453,9 +453,7 @@ assignGeneIdsByReference <- function(grl, annotations, min.exonOverlap = 10, ranges(geneRanges[subjectHits(ov)[multiHits]])) filteredMultiHits = data.frame(queryHits = queryHits(ov)[multiHits], intersectWidth = sum(width(rangeIntersect)), - subjectHits = subjectHits(ov)[multiHits]) %>% - group_by(queryHits) %>% summarise(subjectHits = subjectHits[which.max(intersectWidth)], - intersectWidth = max(intersectWidth)) + subjectHits = subjectHits(ov)[multiHits]) if(fusionMode) { filteredMultiHits <- filteredMultiHits %>% filter(intersectWidth>min.exonOverlap) %>% @@ -465,8 +463,8 @@ assignGeneIdsByReference <- function(grl, annotations, min.exonOverlap = 10, } else { filteredMultiHits <- filteredMultiHits %>% - group_by(queryHits) %>% arrange(desc(intersectWidth)) %>% - dplyr::slice(1) + group_by(queryHits) %>% summarise(subjectHits = subjectHits[which.max(intersectWidth)], + intersectWidth = max(intersectWidth)) geneIds[filteredMultiHits$queryHits] <- names(geneRanges)[filteredMultiHits$subjectHits] } @@ -474,6 +472,44 @@ assignGeneIdsByReference <- function(grl, annotations, min.exonOverlap = 10, return(geneIds) } +# assignGeneIdsByReference <- function(grl, annotations, min.exonOverlap = 10, +# fusionMode=FALSE, prefix = 'Bambu') { +# # (1) assign gene Ids based on first intron match to annotations +# geneRanges <- reducedRangesByGenes(annotations) +# ov=findOverlaps(grl, geneRanges, minoverlap = min.exonOverlap) +# geneIds <- rep(NA, length(grl)) +# uniqueHits <- which(queryHits(ov) %in% which(countQueryHits(ov)==1)) +# geneIds[queryHits(ov)[uniqueHits]] <- +# names(geneRanges)[subjectHits(ov)[uniqueHits]] + +# ## next for non unique hits select one gene (maximum overlap) +# multiHits <- which(queryHits(ov) %in% which(countQueryHits(ov)>1)) +# expandedRanges <- expandRangesList(ranges(grl[queryHits(ov)[multiHits]]), +# ranges(geneRanges[subjectHits(ov)[multiHits]])) +# rangeIntersect <- pintersect(expandedRanges, +# mcols(expandedRanges)$matchRng, resolve.empty = 'start.x') +# intersectById <- tapply(width(rangeIntersect), +# mcols(expandedRanges)$IdMap, sum) + +# filteredMultiHits <- as_tibble(ov[multiHits]) %>% +# mutate(intersectWidth = intersectById) +# if(fusionMode) { +# filteredMultiHits <- filteredMultiHits %>% +# filter(intersectWidth>min.exonOverlap) %>% +# mutate(geneid = names(geneRanges)[subjectHits]) %>% distinct() %>% +# group_by(queryHits) %>% summarise(geneid = paste(geneid, collapse=':')) +# geneIds[filteredMultiHits$queryHits] <- filteredMultiHits$geneid + +# } else { +# filteredMultiHits <- filteredMultiHits %>% +# group_by(queryHits) %>% arrange(desc(intersectWidth)) %>% +# dplyr::slice(1) +# geneIds[filteredMultiHits$queryHits] <- +# names(geneRanges)[filteredMultiHits$subjectHits] +# } +# return(geneIds) +# } + #' Create new gene ids for groups of overlapping read classes which #' don't overlap with known annotations. #' @param grl a GrangesList object with read classes From 11807cd88c4768024e40ddc84f7c86956845084a Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 2 Feb 2024 10:56:52 +0800 Subject: [PATCH 085/189] Remove warning about bambu annotations if discovery not being done --- R/bambu.R | 2 +- R/bambu_utilityFunctions.R | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index c4332ca7..441491e9 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -142,7 +142,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, fusionMode = FALSE, verbose = FALSE, demultiplexed = FALSE, spatial = NULL, quantData = NULL) { if(is.null(annotations)) { annotations = GRangesList() } else annotations <- checkInputs(annotations, reads, - readClass.outputDir = rcOutDir, genomeSequence = genome) + readClass.outputDir = rcOutDir, genomeSequence = genome, discovery = discovery) isoreParameters <- setIsoreParameters(isoreParameters = opt.discovery) #below line is to be compatible with earlier version of running bambu if(!is.null(isoreParameters$max.txNDR)) NDR = isoreParameters$max.txNDR diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index 6351071d..c977cd40 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -74,7 +74,7 @@ updateParameters <- function(Parameters, Parameters.default) { #' @param readClass.outputDir path to readClass output directory #' @importFrom methods is #' @noRd -checkInputs <- function(annotations, reads, readClass.outputDir, genomeSequence){ +checkInputs <- function(annotations, reads, readClass.outputDir, genomeSequence, discovery){ # ===# Check annotation inputs #===# if (!is.null(annotations)) { if (is(annotations, "CompressedGRangesList")) { @@ -97,8 +97,8 @@ checkInputs <- function(annotations, reads, readClass.outputDir, genomeSequence) } else { stop("The annotations is not a GRangesList object a TxDb or a path to a .gtf.") } - if(any(grepl("^BambuGene", names(annotations))) | - any(grepl("^BambuTx", mcols(annotations)$TXNAME))){ + if(discovery & (any(grepl("^BambuGene", names(annotations))) | + any(grepl("^BambuTx", mcols(annotations)$TXNAME)))){ message("Detected Bambu derived annotations in the annotations. ", "Set a new prefix with opt.discovery(list(prefix='newPrefix')) ", "to prevent ambigious id assignment.") From c392d086f9d42155ae2f384f6e367e9a63013af9 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 8 Feb 2024 11:12:04 +0800 Subject: [PATCH 086/189] Keep readnames even if demultiplexed --- R/prepareDataFromBam.R | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index e1df4fab..ddcaefa3 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -27,6 +27,7 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, use.n counter <- 1 cells <- c() umi <- c() + use.names.OG = use.names if(demultiplexed) use.names = TRUE while (isIncomplete(bf)) { ### add ### @@ -43,7 +44,7 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, use.n mcols(readGrgList[[counter]])$UMI <- ifelse(!is.na(mcols(alignmentInfo)$UG), mcols(alignmentInfo)$UG, substr(names(readGrgList[[counter]]), 18, 29)) - names(readGrgList[[counter]]) <- NULL + if(!use.names.OG) {names(readGrgList[[counter]]) <- NULL } cells <- unique(c(cells, mcols(readGrgList[[counter]])$CB)) mcols(readGrgList[[counter]])$CB <- factor(mcols(readGrgList[[counter]])$CB, levels = cells) umi <- unique(c(umi, mcols(readGrgList[[counter]])$UMI)) From 1ed88ebda02b7ea4a399d4f6114eeb130d74a7c8 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 8 Feb 2024 18:31:31 +0800 Subject: [PATCH 087/189] Enable messyForest to take in multiple samples can use the sampleName parameter to decide if the barcodes of two different files should be combined or treated as seperate. I.e if you have a technical replicate you would give them the same samplename where as a biological replicate would have different sample names --- R/bambu-processReads.R | 29 ++++++++++++++++++++++------- R/bambu.R | 6 ++++-- R/prepareDataFromBam.R | 2 +- 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index fa538c85..76a3ce66 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -15,7 +15,8 @@ bambu.processReads <- function(reads, annotations, genomeSequence, readClass.outputDir=NULL, yieldSize=1000000, bpParameters, stranded=FALSE, verbose=FALSE, isoreParameters = setIsoreParameters(NULL), - lowMemory=FALSE, trackReads = trackReads, fusionMode = fusionMode, demultiplexed = FALSE) { + lowMemory=FALSE, trackReads = trackReads, fusionMode = fusionMode, + demultiplexed = FALSE, sampleNames = NULL) { genomeSequence <- checkInputSequence(genomeSequence) # ===# create BamFileList object from character #===# if (is(reads, "BamFile")) { @@ -39,6 +40,14 @@ bambu.processReads <- function(reads, annotations, genomeSequence, reads <- BamFileList(reads, yieldSize = yieldSize) names(reads) <- tools::file_path_sans_ext(BiocGenerics::basename(reads)) } + if(!is.null(sampleNames)){ + if(length(sampleNames==length(reads))){ + names(reads) <- sampleNames + } else{ + message("Not enough provided sample names. Using them in order of inputted files and the remaining files will use the file names") + names(reads)[seq_along(sampleNames)] <- sampleNames + } + } min.readCount = isoreParameters[["min.readCount"]] fitReadClassModel = isoreParameters[["fitReadClassModel"]] defaultModels = isoreParameters[["defaultModels"]] @@ -54,9 +63,19 @@ bambu.processReads <- function(reads, annotations, genomeSequence, defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode, demultiplexed = demultiplexed, index = i)}, BPPARAM = bpParameters) + + sampleNames = as.numeric(as.factor(sampleNames)) + for(i in seq_along(readGrgList)){ + if(demultiplexed){ + mcols(readGrgList[[i]])$CB = paste0(names(reads)[i], mcols(readGrgList[[i]])$CB) + } else{mcols(readGrgList[[i]])$CB = sampleNames[i]} + mcols(readGrgList[[i]])$CB = as.factor(mcols(readGrgList[[i]])$CB) + } readGrgList = do.call(c, readGrgList) mcols(readGrgList)$id <- seq_along(readGrgList) - + if(demultiplexed){ + mcols(readGrgList)$sampleID = as.numeric(mcols(readGrgList)$CB) + } else {mcols(readGrgList)$sampleID = mcols(readGrgList)$CB} readClassList <- constructReadClasses(readGrgList, genomeSequence = genomeSequence,annotations = annotations, readClass.outputDir = readClass.outputDir, stranded = stranded, min.readCount = min.readCount, @@ -65,7 +84,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode) metadata(readClassList)$samples = names(reads) - if(demultiplexed)metadata(readClassList)$samples = metadata(readGrgList)$CB + if(demultiplexed)metadata(readClassList)$samples = levels(mcols(readGrgList)$CB) # TODO return output # if (!is.null(readClass.outputDir)) { @@ -121,10 +140,6 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, # reassign Ids after seqlevels are dropped mcols(readGrgList)$id <- seq_along(readGrgList) } - if(demultiplexed){ - metadata(readGrgList)$CB = levels(mcols(readGrgList)$CB) - mcols(readGrgList)$sampleID = mcols(readGrgList)$sampleID = as.numeric(mcols(readGrgList)$CB) - } else {mcols(readGrgList)$sampleID = index} #removes reads that are outside genome coordinates badReads = which(max(end(ranges(readGrgList)))>= seqlengths(genomeSequence)[as.character(getChrFromGrList(readGrgList))]) diff --git a/R/bambu.R b/R/bambu.R index 441491e9..d5e74aa6 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -139,7 +139,8 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, opt.discovery = NULL, opt.em = NULL, rcOutDir = NULL, discovery = TRUE, assignDist = TRUE, quant = TRUE, stranded = FALSE, ncore = 1, yieldSize = NULL, trackReads = FALSE, returnDistTable = FALSE, lowMemory = FALSE, - fusionMode = FALSE, verbose = FALSE, demultiplexed = FALSE, spatial = NULL, quantData = NULL) { + fusionMode = FALSE, verbose = FALSE, demultiplexed = FALSE, spatial = NULL, quantData = NULL, + sampleNames = NULL) { if(is.null(annotations)) { annotations = GRangesList() } else annotations <- checkInputs(annotations, reads, readClass.outputDir = rcOutDir, genomeSequence = genome, discovery = discovery) @@ -169,7 +170,8 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, readClass.outputDir = rcOutDir, yieldSize, bpParameters, stranded, verbose, isoreParameters, trackReads = trackReads, fusionMode = fusionMode, - lowMemory = lowMemory, demultiplexed = demultiplexed) + lowMemory = lowMemory, demultiplexed = demultiplexed, + sampleNames = sampleNames) } #warnings = handleWarnings(readClassList, verbose) diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index ddcaefa3..8f664d13 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -64,7 +64,7 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, use.n } # remove microexons of width 1bp from list readGrgList <- readGrgList[width(readGrgList) > 1] - + mcols(readGrgList[[counter]])$CB return(readGrgList) } From ab546636a778e73d5faf6f0269f0bf17086c7a8b Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 21 Feb 2024 17:23:16 +0800 Subject: [PATCH 088/189] Add cleanRead argument This looks at flexiplex reads and only keeps the alignment closest to the barcode to reduce the impact of the duplicated reads creating supplimentary alignments that are barcoded incorrectly --- R/bambu-processReads.R | 10 ++++++---- R/bambu.R | 4 ++-- R/prepareDataFromBam.R | 38 +++++++++++++++++++++++++++++++++----- 3 files changed, 41 insertions(+), 11 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 76a3ce66..f15a2397 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -16,7 +16,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, readClass.outputDir=NULL, yieldSize=1000000, bpParameters, stranded=FALSE, verbose=FALSE, isoreParameters = setIsoreParameters(NULL), lowMemory=FALSE, trackReads = trackReads, fusionMode = fusionMode, - demultiplexed = FALSE, sampleNames = NULL) { + demultiplexed = FALSE, cleanReads = FALSE, sampleNames = NULL) { genomeSequence <- checkInputSequence(genomeSequence) # ===# create BamFileList object from character #===# if (is(reads, "BamFile")) { @@ -61,7 +61,8 @@ bambu.processReads <- function(reads, annotations, genomeSequence, stranded = stranded, min.readCount = min.readCount, fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, - lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode, demultiplexed = demultiplexed, index = i)}, + lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode, + demultiplexed = demultiplexed, cleanReads = cleanReads, index = i)}, BPPARAM = bpParameters) sampleNames = as.numeric(as.factor(sampleNames)) @@ -112,8 +113,9 @@ bambu.processReads <- function(reads, annotations, genomeSequence, bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, readClass.outputDir = NULL, yieldSize = NULL, stranded = FALSE, min.readCount = 2, fitReadClassModel = TRUE, min.exonOverlap = 10, defaultModels = NULL, returnModel = FALSE, - verbose = FALSE, lowMemory = FALSE, trackReads = FALSE, fusionMode = FALSE, demultiplexed = FALSE, index = 0) { - readGrgList <- prepareDataFromBam(bam.file[[1]], verbose = verbose, yieldSize = yieldSize, use.names = trackReads, demultiplexed = demultiplexed) + verbose = FALSE, lowMemory = FALSE, trackReads = FALSE, fusionMode = FALSE, demultiplexed = FALSE, + cleanReads = FALSE, index = 0) { + readGrgList <- prepareDataFromBam(bam.file[[1]], verbose = verbose, yieldSize = yieldSize, use.names = trackReads, demultiplexed = demultiplexed, cleanReads = cleanReads) warnings = c() warnings = seqlevelCheckReadsAnnotation(readGrgList, annotations) if(verbose & length(warnings) > 0) warning(paste(warnings,collapse = "\n")) diff --git a/R/bambu.R b/R/bambu.R index d5e74aa6..3ebfe832 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -140,7 +140,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, assignDist = TRUE, quant = TRUE, stranded = FALSE, ncore = 1, yieldSize = NULL, trackReads = FALSE, returnDistTable = FALSE, lowMemory = FALSE, fusionMode = FALSE, verbose = FALSE, demultiplexed = FALSE, spatial = NULL, quantData = NULL, - sampleNames = NULL) { + sampleNames = NULL, cleanReads = FALSE) { if(is.null(annotations)) { annotations = GRangesList() } else annotations <- checkInputs(annotations, reads, readClass.outputDir = rcOutDir, genomeSequence = genome, discovery = discovery) @@ -171,7 +171,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, bpParameters, stranded, verbose, isoreParameters, trackReads = trackReads, fusionMode = fusionMode, lowMemory = lowMemory, demultiplexed = demultiplexed, - sampleNames = sampleNames) + sampleNames = sampleNames, cleanReads = cleanReads) } #warnings = handleWarnings(readClassList, verbose) diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index 8f664d13..35d6cc16 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -7,7 +7,7 @@ #' @importFrom GenomicAlignments grglist readGAlignments #' @importFrom GenomicRanges width #' @noRd -prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, use.names = FALSE, demultiplexed = NULL) { +prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, use.names = FALSE, demultiplexed = NULL, cleanReads = FALSE) { if (is(bamFile, "BamFile")) { if (!is.null(yieldSize)) { yieldSize(bamFile) <- yieldSize @@ -30,13 +30,10 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, use.n use.names.OG = use.names if(demultiplexed) use.names = TRUE while (isIncomplete(bf)) { - ### add ### alignmentInfo <- readGAlignments(bf, param = ScanBamParam(tag = c("BC", "UG"), flag = scanBamFlag(isSecondaryAlignment = FALSE)), use.names = use.names) - ### add ### readGrgList[[counter]] <-grglist(alignmentInfo) - ### add ### if (isTRUE(demultiplexed)){ mcols(readGrgList[[counter]])$CB <- ifelse(!is.na(mcols(alignmentInfo)$BC), mcols(alignmentInfo)$BC, substr(names(readGrgList[[counter]]), 1, 16)) @@ -50,7 +47,19 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, use.n umi <- unique(c(umi, mcols(readGrgList[[counter]])$UMI)) mcols(readGrgList[[counter]])$UMI <- factor(mcols(readGrgList[[counter]])$UMI, levels = umi) } - ### add ### + if(cleanReads){ + softClip5Prime <-pmax(0,as.numeric(gsub('^(\\d*)[S].*','\\1',GenomicAlignments::cigar(reads))), na.rm=T) + softClip3Prime <-pmax(0,as.numeric(gsub('.*\\D(\\d*)[S]$','\\1',GenomicAlignments::cigar(reads))), na.rm=T) + hardClip5Prime <-pmax(0,as.numeric(gsub('^(\\d*)[H].*','\\1',GenomicAlignments::cigar(reads))), na.rm=T) + hardClip3Prime <-pmax(0,as.numeric(gsub('.*\\D(\\d*)[H]$','\\1',GenomicAlignments::cigar(reads))), na.rm=T) + mcols(readGrgList[[counter]])$clip5Prime = pmax(softClip5Prime, hardClip5Prime) + mcols(readGrgList[[counter]])$clip3Prime = pmax(softClip3Prime, hardClip3Prime) + rev = as.vector(strand(reads) == '-') + rev2 = grepl("_-.+of", names(reads)) + temp = mcols(readGrgList[[counter]])$clip5Prime + mcols(readGrgList[[counter]])$clip5Prime[rev != rev2] = mcols(readGrgList[[counter]])$clip3Prime[rev != rev2] + mcols(readGrgList[[counter]])$clip3Prime[rev != rev2] = temp[rev != rev2] + } counter <- counter + 1 } @@ -65,6 +74,25 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, use.n # remove microexons of width 1bp from list readGrgList <- readGrgList[width(readGrgList) > 1] mcols(readGrgList[[counter]])$CB + + if(cleanReads){ + #extract duplicated reads from flexiplex to clean + #leave other reads alone as supplimental alignments maybe fusion transcripts + #commented out because it takes awhile + # dt = data.table(name = substr(readNames2,0,nchar(readNames2[1])-2), + # strand = substr(readNames2,nchar(readNames2[1]),nchar(readNames2[1]))) + # dt[, id := .I] + # dt <- dt[, .(ids = list(id), toFilt = any(strand == "+" & strand == "-")), by = name] + # readGrgList.keep = readGrgList[c(dt$ids[!dt$toFilt])] + # readGrgList.filt = readGrgList[c(dt$ids[dt$toFilt])] + + df = data.frame(name = names(readGrgList), + clip5 = mcols(readGrgList)$clip5Prime) + df = df %>% mutate(id = row_number()) %>% group_by(name) %>% summarise(primary.id = id[which.mix(clip5)]) + readGrgList = unname(readGrgList[df$primary.id]) + #readGrgList = c(readGrgList.filt, unname(readGrgList.keep)) + } + return(readGrgList) } From 6ec31de63a714844c322b16fe33d73740e520362 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 29 Feb 2024 13:57:28 +0800 Subject: [PATCH 089/189] Tidy up clean reads --- R/prepareDataFromBam.R | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index 35d6cc16..0230adc6 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -7,7 +7,8 @@ #' @importFrom GenomicAlignments grglist readGAlignments #' @importFrom GenomicRanges width #' @noRd -prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, use.names = FALSE, demultiplexed = NULL, cleanReads = FALSE) { +prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, + use.names = FALSE, demultiplexed = FALSE, cleanReads = FALSE) { if (is(bamFile, "BamFile")) { if (!is.null(yieldSize)) { yieldSize(bamFile) <- yieldSize @@ -28,7 +29,7 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, use.n cells <- c() umi <- c() use.names.OG = use.names - if(demultiplexed) use.names = TRUE + if(demultiplexed | cleanReads) use.names = TRUE while (isIncomplete(bf)) { alignmentInfo <- readGAlignments(bf, param = ScanBamParam(tag = c("BC", "UG"), flag = scanBamFlag(isSecondaryAlignment = FALSE)), @@ -41,21 +42,20 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, use.n mcols(readGrgList[[counter]])$UMI <- ifelse(!is.na(mcols(alignmentInfo)$UG), mcols(alignmentInfo)$UG, substr(names(readGrgList[[counter]]), 18, 29)) - if(!use.names.OG) {names(readGrgList[[counter]]) <- NULL } cells <- unique(c(cells, mcols(readGrgList[[counter]])$CB)) mcols(readGrgList[[counter]])$CB <- factor(mcols(readGrgList[[counter]])$CB, levels = cells) umi <- unique(c(umi, mcols(readGrgList[[counter]])$UMI)) mcols(readGrgList[[counter]])$UMI <- factor(mcols(readGrgList[[counter]])$UMI, levels = umi) } if(cleanReads){ - softClip5Prime <-pmax(0,as.numeric(gsub('^(\\d*)[S].*','\\1',GenomicAlignments::cigar(reads))), na.rm=T) - softClip3Prime <-pmax(0,as.numeric(gsub('.*\\D(\\d*)[S]$','\\1',GenomicAlignments::cigar(reads))), na.rm=T) - hardClip5Prime <-pmax(0,as.numeric(gsub('^(\\d*)[H].*','\\1',GenomicAlignments::cigar(reads))), na.rm=T) - hardClip3Prime <-pmax(0,as.numeric(gsub('.*\\D(\\d*)[H]$','\\1',GenomicAlignments::cigar(reads))), na.rm=T) + softClip5Prime <-pmax(0,as.numeric(gsub('^(\\d*)[S].*','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T) + softClip3Prime <-pmax(0,as.numeric(gsub('.*\\D(\\d*)[S]$','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T) + hardClip5Prime <-pmax(0,as.numeric(gsub('^(\\d*)[H].*','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T) + hardClip3Prime <-pmax(0,as.numeric(gsub('.*\\D(\\d*)[H]$','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T) mcols(readGrgList[[counter]])$clip5Prime = pmax(softClip5Prime, hardClip5Prime) mcols(readGrgList[[counter]])$clip3Prime = pmax(softClip3Prime, hardClip3Prime) - rev = as.vector(strand(reads) == '-') - rev2 = grepl("_-.+of", names(reads)) + rev = as.vector(strand(alignmentInfo) == '-') + rev2 = grepl("_-.+of", names(alignmentInfo)) temp = mcols(readGrgList[[counter]])$clip5Prime mcols(readGrgList[[counter]])$clip5Prime[rev != rev2] = mcols(readGrgList[[counter]])$clip3Prime[rev != rev2] mcols(readGrgList[[counter]])$clip3Prime[rev != rev2] = temp[rev != rev2] @@ -73,8 +73,6 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, use.n } # remove microexons of width 1bp from list readGrgList <- readGrgList[width(readGrgList) > 1] - mcols(readGrgList[[counter]])$CB - if(cleanReads){ #extract duplicated reads from flexiplex to clean #leave other reads alone as supplimental alignments maybe fusion transcripts @@ -88,11 +86,11 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, use.n df = data.frame(name = names(readGrgList), clip5 = mcols(readGrgList)$clip5Prime) - df = df %>% mutate(id = row_number()) %>% group_by(name) %>% summarise(primary.id = id[which.mix(clip5)]) + df = df %>% mutate(id = row_number()) %>% group_by(name) %>% summarise(primary.id = id[which.min(clip5)]) readGrgList = unname(readGrgList[df$primary.id]) #readGrgList = c(readGrgList.filt, unname(readGrgList.keep)) } - + if(!use.names.OG) {names(readGrgList) <- NULL } return(readGrgList) } From fac48720d05a8d28e5ac8eb1d46728550d00dd3f Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 5 Mar 2024 15:27:52 +0800 Subject: [PATCH 090/189] UMI deduplication --- R/prepareDataFromBam.R | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index 0230adc6..178b9566 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -84,10 +84,27 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, # readGrgList.keep = readGrgList[c(dt$ids[!dt$toFilt])] # readGrgList.filt = readGrgList[c(dt$ids[dt$toFilt])] + #UMI deduplication by barcode + start.ptm <- proc.time() + print(length(readGrgList)) + df = data.frame(umi = mcols(readGrgList)$CB, + barcode = mcols(readGrgList)$UMI, + lengths = sum(width(readGrgList))) + df = df %>% mutate(id = row_number()) %>% group_by(barcode, umi) %>% summarise(primary.id = id[which.max(lengths)]) + readGrgList = unname(readGrgList[df$primary.id]) + print(length(readGrgList)) + end.ptm <- proc.time() + message("UMI deduplication Time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") + #select alignments closest to barcode + start.ptm <- proc.time() + print(length(readGrgList)) df = data.frame(name = names(readGrgList), clip5 = mcols(readGrgList)$clip5Prime) df = df %>% mutate(id = row_number()) %>% group_by(name) %>% summarise(primary.id = id[which.min(clip5)]) readGrgList = unname(readGrgList[df$primary.id]) + print(length(readGrgList)) + end.ptm <- proc.time() + message("Primary alignment selection Time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") #readGrgList = c(readGrgList.filt, unname(readGrgList.keep)) } if(!use.names.OG) {names(readGrgList) <- NULL } From 26afc663f20e34d667b1744d8ea3104d9b763595 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 12 Mar 2024 17:03:09 +0800 Subject: [PATCH 091/189] change order of UMI dedup with cleaning reads --- R/prepareDataFromBam.R | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index 178b9566..1e558f5f 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -84,6 +84,17 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, # readGrgList.keep = readGrgList[c(dt$ids[!dt$toFilt])] # readGrgList.filt = readGrgList[c(dt$ids[dt$toFilt])] + #select alignments closest to barcode + start.ptm <- proc.time() + print(length(readGrgList)) + df = data.frame(name = names(readGrgList), + clip5 = mcols(readGrgList)$clip5Prime) + df = df %>% mutate(id = row_number()) %>% group_by(name) %>% summarise(primary.id = id[which.min(clip5)]) + readGrgList = unname(readGrgList[df$primary.id]) + print(length(readGrgList)) + end.ptm <- proc.time() + message("Primary alignment selection Time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") + #UMI deduplication by barcode start.ptm <- proc.time() print(length(readGrgList)) @@ -91,20 +102,11 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, barcode = mcols(readGrgList)$UMI, lengths = sum(width(readGrgList))) df = df %>% mutate(id = row_number()) %>% group_by(barcode, umi) %>% summarise(primary.id = id[which.max(lengths)]) - readGrgList = unname(readGrgList[df$primary.id]) + readGrgList = readGrgList[df$primary.id] print(length(readGrgList)) end.ptm <- proc.time() message("UMI deduplication Time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") - #select alignments closest to barcode - start.ptm <- proc.time() - print(length(readGrgList)) - df = data.frame(name = names(readGrgList), - clip5 = mcols(readGrgList)$clip5Prime) - df = df %>% mutate(id = row_number()) %>% group_by(name) %>% summarise(primary.id = id[which.min(clip5)]) - readGrgList = unname(readGrgList[df$primary.id]) - print(length(readGrgList)) - end.ptm <- proc.time() - message("Primary alignment selection Time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") + #readGrgList = c(readGrgList.filt, unname(readGrgList.keep)) } if(!use.names.OG) {names(readGrgList) <- NULL } From f31c1825241d4f24213a69d090393c983f1e8fde Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 12 Mar 2024 17:32:06 +0800 Subject: [PATCH 092/189] add extra messages --- R/bambu-extendAnnotations-utilityCombine.R | 2 ++ 1 file changed, 2 insertions(+) diff --git a/R/bambu-extendAnnotations-utilityCombine.R b/R/bambu-extendAnnotations-utilityCombine.R index cdf0c5ef..58ec1dfa 100644 --- a/R/bambu-extendAnnotations-utilityCombine.R +++ b/R/bambu-extendAnnotations-utilityCombine.R @@ -14,10 +14,12 @@ isore.combineTranscriptCandidates <- function(readClassList, stranded, ## stranded used for unspliced reduce min.readCount , min.readFractionByGene, min.txScore.multiExon, min.txScore.singleExon, bpParameters ,verbose){ + message("starting combineSplicedTranscriptModels") combinedSplicedTranscripts <- combineSplicedTranscriptModels(readClassList, bpParameters, min.readCount, min.readFractionByGene, min.txScore.multiExon, min.txScore.singleExon, verbose) %>% data.table() + message("finished combineSplicedTranscriptModels") combinedSplicedTranscripts[,confidenceType := "highConfidenceJunctionReads"] return(combinedSplicedTranscripts) # combinedUnsplicedTranscripts <- From cb12d54908bd26c44a8ea7a99a84bb003d4fc6e4 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 19 Mar 2024 16:37:06 +0800 Subject: [PATCH 093/189] add in argument --- R/bambu-processReads.R | 7 ++++--- R/bambu.R | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index f15a2397..0863ca3d 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -16,7 +16,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, readClass.outputDir=NULL, yieldSize=1000000, bpParameters, stranded=FALSE, verbose=FALSE, isoreParameters = setIsoreParameters(NULL), lowMemory=FALSE, trackReads = trackReads, fusionMode = fusionMode, - demultiplexed = FALSE, cleanReads = FALSE, sampleNames = NULL) { + demultiplexed = FALSE, cleanReads = FALSE, sampleNames = NULL, barcodesToFilter = NULL) { genomeSequence <- checkInputSequence(genomeSequence) # ===# create BamFileList object from character #===# if (is(reads, "BamFile")) { @@ -62,7 +62,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode, - demultiplexed = demultiplexed, cleanReads = cleanReads, index = i)}, + demultiplexed = demultiplexed, cleanReads = cleanReads, index = i, barcodesToFilter = barcodesToFilter)}, BPPARAM = bpParameters) sampleNames = as.numeric(as.factor(sampleNames)) @@ -114,9 +114,10 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, readClass.outputDir = NULL, yieldSize = NULL, stranded = FALSE, min.readCount = 2, fitReadClassModel = TRUE, min.exonOverlap = 10, defaultModels = NULL, returnModel = FALSE, verbose = FALSE, lowMemory = FALSE, trackReads = FALSE, fusionMode = FALSE, demultiplexed = FALSE, - cleanReads = FALSE, index = 0) { + cleanReads = FALSE, index = 0, barcodesToFilter = NULL) { readGrgList <- prepareDataFromBam(bam.file[[1]], verbose = verbose, yieldSize = yieldSize, use.names = trackReads, demultiplexed = demultiplexed, cleanReads = cleanReads) warnings = c() + if(!is.null(barcodesToFilter) & demultiplexed){ readGrgList = readGrgList[!mcols(readGrgList)$CB %in% barcodesToFilter]} warnings = seqlevelCheckReadsAnnotation(readGrgList, annotations) if(verbose & length(warnings) > 0) warning(paste(warnings,collapse = "\n")) #check seqlevels for consistency, drop ranges not present in genomeSequence diff --git a/R/bambu.R b/R/bambu.R index 3ebfe832..ef8ba677 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -140,7 +140,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, assignDist = TRUE, quant = TRUE, stranded = FALSE, ncore = 1, yieldSize = NULL, trackReads = FALSE, returnDistTable = FALSE, lowMemory = FALSE, fusionMode = FALSE, verbose = FALSE, demultiplexed = FALSE, spatial = NULL, quantData = NULL, - sampleNames = NULL, cleanReads = FALSE) { + sampleNames = NULL, cleanReads = FALSE, barcodesToFilter = NULL) { if(is.null(annotations)) { annotations = GRangesList() } else annotations <- checkInputs(annotations, reads, readClass.outputDir = rcOutDir, genomeSequence = genome, discovery = discovery) @@ -171,7 +171,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, bpParameters, stranded, verbose, isoreParameters, trackReads = trackReads, fusionMode = fusionMode, lowMemory = lowMemory, demultiplexed = demultiplexed, - sampleNames = sampleNames, cleanReads = cleanReads) + sampleNames = sampleNames, cleanReads = cleanReads, barcodesToFilter = barcodesToFilter) } #warnings = handleWarnings(readClassList, verbose) From a1484654be753d3bd5928ef3a9568ccc0f318f2b Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 1 Apr 2024 15:02:41 +0800 Subject: [PATCH 094/189] Transcript discovery at cluster level --- R/bambu.R | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/R/bambu.R b/R/bambu.R index ef8ba677..5e2db7fc 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -140,7 +140,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, assignDist = TRUE, quant = TRUE, stranded = FALSE, ncore = 1, yieldSize = NULL, trackReads = FALSE, returnDistTable = FALSE, lowMemory = FALSE, fusionMode = FALSE, verbose = FALSE, demultiplexed = FALSE, spatial = NULL, quantData = NULL, - sampleNames = NULL, cleanReads = FALSE, barcodesToFilter = NULL) { + sampleNames = NULL, cleanReads = FALSE, barcodesToFilter = NULL, clustering = NULL) { if(is.null(annotations)) { annotations = GRangesList() } else annotations <- checkInputs(annotations, reads, readClass.outputDir = rcOutDir, genomeSequence = genome, discovery = discovery) @@ -182,6 +182,59 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, isoreParameters, stranded, bpParameters, fusionMode, verbose) metadata(annotations)$warnings = warnings + #### split rcf into clusters + if(!is.null(clustering)){ + message("--- Start extending annotations for clusters ---") + #if clustering is a csv, create a list with the barcodes for each cluster + #csv must have two cols with heading barcode, cluster + if(!is.list(clustering)){ + clustering = read.csv(clustering) + clustering = clustering %>% group_by(cluster) %>% summarise(barcodes = list(barcode)) + clusters = clustering$cluster + clustering = clustering$barcodes + names(clustering) = clusters + } + annotations.clusters = list() + rcfs.clusters = list() + clusters.rc = splitReadClassFilesByRC(readClassList[[1]]) + txScores = c() + for(i in seq_along(clustering)){ + print(names(clustering)[i]) + ###TODO need to account for the sample name here which is added to the barcode + index = match(clustering[[i]],gsub('demultiplexed','',metadata(rcf[[1]])$samples)) + index = index[!is.na(index)] + print(length(index)) + if(length(index)<20) next + rcf.counts = clusters.rc[,index] + rcf.filt = readClassList[[1]][rowSums(rcf.counts)>0,] + rowData(rcf.filt)$readCount = rowSums(rcf.counts)[rowSums(rcf.counts)>0] + countsTBL = calculateGeneProportion(counts=mcols(rcf.filt)$readCount, + geneIds=mcols(rcf.filt)$GENEID) + rowData(rcf.filt)$geneReadProp = countsTBL$geneReadProp + rowData(rcf.filt)$geneReadCount = countsTBL$geneReadCount + rowData(rcf.filt)$startSD = 0 + rowData(rcf.filt)$endSD = 0 + rowData(rcf.filt)$readCount.posStrand = 0 + thresholdIndex = which(rowData(rcf.filt)$readCount>=2) + model = trainBambu(rcf.filt, verbose = TRUE, min.readCount = 2) + txScore = getTranscriptScore(rowData(rcf.filt)[thresholdIndex,], model, + defaultModels) + rowData(rcf.filt)$txScore = rep(NA,nrow(rcf.filt)) + rowData(rcf.filt)$txScore[thresholdIndex] = txScore + #txScores = cbind(txScores, rowData(rcf.filt)$txScore) + rcfs.clusters[[names(clustering)[i]]] = rcf.filt + annotations.clusters[[names(clustering)[i]]] <- bambu.extendAnnotations(list(rcf.filt), annotations, NDR, + isoreParameters, stranded, bpParameters, fusionMode, verbose) + } + print("test") + if(length(rcfs.clusters)>0){ + print("--- Merging all individual clusters ---") + annotations.clusters[["merged"]] <- bambu.extendAnnotations(rcfs.clusters, annotations, NDR, + isoreParameters, stranded, bpParameters, fusionMode, verbose) + } + metadata(annotations)$clusters = annotations.clusters + } + if (!quant & !assignDist) return(annotations) } From 089f86b98fc1783e403d9a0221ca071d2aebc3a2 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 11 Apr 2024 11:30:41 +0800 Subject: [PATCH 095/189] keep txScore in extendAnno --- R/bambu-extendAnnotations-utilityExtend.R | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index b675f2c4..cc7fba6c 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -626,7 +626,7 @@ combineWithAnnotations <- function(rowDataCombinedFiltered, extendedAnnotationRanges <- exonRangesCombinedFiltered mcols(extendedAnnotationRanges) <- rowDataCombinedFiltered[, c("GENEID", "novelGene", "novelTranscript", "txClassDescription","readCount", "NDR", - "relReadCount", "relSubsetCount")] + "maxTxScore", "relReadCount", "relSubsetCount")] equalRanges = rowDataCombinedFiltered[!is.na(rowDataCombinedFiltered$TXNAME),] #remove extended ranges that are already present in annotation extendedAnnotationRanges <- extendedAnnotationRanges[is.na(rowDataCombinedFiltered$TXNAME)] @@ -637,9 +637,11 @@ combineWithAnnotations <- function(rowDataCombinedFiltered, mcols(annotationRangesToMerge)$novelTranscript <- FALSE mcols(annotationRangesToMerge)$novelGene <- FALSE mcols(annotationRangesToMerge)$NDR <- NA + mcols(annotationRangesToMerge)$txScore <- NA mcols(extendedAnnotationRanges) <- mcols(extendedAnnotationRanges)[,colnames(mcols(extendedAnnotationRanges))] #copy over stats to annotations from read classes mcols(annotationRangesToMerge[equalRanges$TXNAME])$NDR = equalRanges$NDR + mcols(annotationRangesToMerge[equalRanges$TXNAME])$maxTxScore = equalRanges$maxTxScore mcols(annotationRangesToMerge[equalRanges$TXNAME])$readCount = equalRanges$readCount mcols(annotationRangesToMerge[equalRanges$TXNAME])$relReadCount = equalRanges$relReadCount mcols(annotationRangesToMerge[equalRanges$TXNAME])$relSubsetCount = equalRanges$relSubsetCount @@ -662,7 +664,7 @@ combineWithAnnotations <- function(rowDataCombinedFiltered, if(!identical(names(extendedAnnotationRanges),minEqClasses$queryTxId)) warning('eq classes might be incorrect') mcols(extendedAnnotationRanges)$eqClassById <- minEqClasses$eqClassById mcols(extendedAnnotationRanges) <- mcols(extendedAnnotationRanges)[, - c("TXNAME", "GENEID", "NDR", "novelGene", "novelTranscript", "txClassDescription","readCount","relReadCount", "relSubsetCount", "txid", "eqClassById")] + c("TXNAME", "GENEID", "NDR", "maxTxScore", "novelGene", "novelTranscript", "txClassDescription","readCount","relReadCount", "relSubsetCount", "txid", "eqClassById")] return(extendedAnnotationRanges) } From 50a00903a6c8aeb3bd00915ef9acc80174c7616c Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 12 Apr 2024 15:53:18 +0800 Subject: [PATCH 096/189] Allow demultiplexing from file File should have 3 coloums, readName, BC, and UMI --- R/bambu-processReads.R | 6 +++--- R/bambu_utilityFunctions.R | 2 +- R/prepareDataFromBam.R | 25 +++++++++++++++++-------- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index f15a2397..bf9bebca 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -67,14 +67,14 @@ bambu.processReads <- function(reads, annotations, genomeSequence, sampleNames = as.numeric(as.factor(sampleNames)) for(i in seq_along(readGrgList)){ - if(demultiplexed){ + if(!isFALSE(demultiplexed)){ mcols(readGrgList[[i]])$CB = paste0(names(reads)[i], mcols(readGrgList[[i]])$CB) } else{mcols(readGrgList[[i]])$CB = sampleNames[i]} mcols(readGrgList[[i]])$CB = as.factor(mcols(readGrgList[[i]])$CB) } readGrgList = do.call(c, readGrgList) mcols(readGrgList)$id <- seq_along(readGrgList) - if(demultiplexed){ + if(!isFALSE(demultiplexed)){ mcols(readGrgList)$sampleID = as.numeric(mcols(readGrgList)$CB) } else {mcols(readGrgList)$sampleID = mcols(readGrgList)$CB} readClassList <- constructReadClasses(readGrgList, genomeSequence = genomeSequence,annotations = annotations, @@ -85,7 +85,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode) metadata(readClassList)$samples = names(reads) - if(demultiplexed)metadata(readClassList)$samples = levels(mcols(readGrgList)$CB) + if(!isFALSE(demultiplexed))metadata(readClassList)$samples = levels(mcols(readGrgList)$CB) # TODO return output # if (!is.null(readClass.outputDir)) { diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index c977cd40..db60b55e 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -9,7 +9,7 @@ setBiocParallelParameters <- function(reads, ncore, verbose, demultiplexed){ "to resolve the issue that originates from the XGboost package.") bpParameters <- bpparam() #===# set parallel options: otherwise use parallel to distribute samples - bpParameters$workers <- ifelse(length(reads) == 1 & !demultiplexed, 1, ncore) + bpParameters$workers <- ifelse(length(reads) == 1 & isFALSE(demultiplexed), 1, ncore) bpParameters$progressbar <- ifelse(length(reads) > 1 & !verbose, TRUE, FALSE) return(bpParameters) } diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index 1e558f5f..a978959d 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -29,19 +29,28 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, cells <- c() umi <- c() use.names.OG = use.names - if(demultiplexed | cleanReads) use.names = TRUE + if(!isFALSE(demultiplexed) | cleanReads) use.names = TRUE + if(grepl(".[ct]sv$",demultiplexed)){ + readMap = read.table(demultiplexed, + sep = ifelse(grepl(".tsv$",demultiplexed), "\t", ","), header = FALSE) + } while (isIncomplete(bf)) { alignmentInfo <- readGAlignments(bf, param = ScanBamParam(tag = c("BC", "UG"), flag = scanBamFlag(isSecondaryAlignment = FALSE)), use.names = use.names) readGrgList[[counter]] <-grglist(alignmentInfo) - if (isTRUE(demultiplexed)){ - mcols(readGrgList[[counter]])$CB <- ifelse(!is.na(mcols(alignmentInfo)$BC), mcols(alignmentInfo)$BC, - substr(names(readGrgList[[counter]]), 1, 16)) - - mcols(readGrgList[[counter]])$UMI <- ifelse(!is.na(mcols(alignmentInfo)$UG), mcols(alignmentInfo)$UG, - substr(names(readGrgList[[counter]]), 18, 29)) - + if (!isFALSE(demultiplexed)){ + if(isTRUE(demultiplexed)){ + mcols(readGrgList[[counter]])$CB <- ifelse(!is.na(mcols(alignmentInfo)$BC), mcols(alignmentInfo)$BC, + substr(names(readGrgList[[counter]]), 1, 16)) + mcols(readGrgList[[counter]])$UMI <- ifelse(!is.na(mcols(alignmentInfo)$UG), mcols(alignmentInfo)$UG, + substr(names(readGrgList[[counter]]), 18, 29)) + } else{ + mcols(readGrgList[[counter]])$CB = "NA" + mcols(readGrgList[[counter]])$UMI = "NA" + mcols(readGrgList[[counter]])$CB = readMap[,2][match(names(readGrgList[[counter]]),readMap[,1])] + mcols(readGrgList[[counter]])$UMI = readMap[,3][match(names(readGrgList[[counter]]),readMap[,1])] + } cells <- unique(c(cells, mcols(readGrgList[[counter]])$CB)) mcols(readGrgList[[counter]])$CB <- factor(mcols(readGrgList[[counter]])$CB, levels = cells) umi <- unique(c(umi, mcols(readGrgList[[counter]])$UMI)) From 76681eab2fa91f2e1be1a6d3dc857fc8b5004d2a Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 19 Apr 2024 14:40:22 +0800 Subject: [PATCH 097/189] Flexible BC and UMI lengths Also will warn if UMIs arn't provided and if there are reads without barcodes --- R/prepareDataFromBam.R | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index a978959d..2fa2b027 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -42,9 +42,9 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, if (!isFALSE(demultiplexed)){ if(isTRUE(demultiplexed)){ mcols(readGrgList[[counter]])$CB <- ifelse(!is.na(mcols(alignmentInfo)$BC), mcols(alignmentInfo)$BC, - substr(names(readGrgList[[counter]]), 1, 16)) + gsub("(^[GACT]+(?=_)).*", '\\1', x, perl = TRUE)) mcols(readGrgList[[counter]])$UMI <- ifelse(!is.na(mcols(alignmentInfo)$UG), mcols(alignmentInfo)$UG, - substr(names(readGrgList[[counter]]), 18, 29)) + gsub(".*((?<=_)[GACT]*(?=#)).*", '\\1', x, perl = TRUE)) } else{ mcols(readGrgList[[counter]])$CB = "NA" mcols(readGrgList[[counter]])$UMI = "NA" @@ -82,6 +82,11 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, } # remove microexons of width 1bp from list readGrgList <- readGrgList[width(readGrgList) > 1] + numNoBCs = sum(mcols(readGrgList)$CB != "NA") + if(numNoBCs > 0){ + message("Removing ", , " reads that were not assigned barcodes. If this is unexpected check the barcode map input") + readGrgList = readGrgList[mcols(readGrgList)$CB != "NA"] + } if(cleanReads){ #extract duplicated reads from flexiplex to clean #leave other reads alone as supplimental alignments maybe fusion transcripts @@ -95,26 +100,28 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, #select alignments closest to barcode start.ptm <- proc.time() - print(length(readGrgList)) df = data.frame(name = names(readGrgList), clip5 = mcols(readGrgList)$clip5Prime) df = df %>% mutate(id = row_number()) %>% group_by(name) %>% summarise(primary.id = id[which.min(clip5)]) readGrgList = unname(readGrgList[df$primary.id]) - print(length(readGrgList)) end.ptm <- proc.time() message("Primary alignment selection Time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") #UMI deduplication by barcode start.ptm <- proc.time() - print(length(readGrgList)) - df = data.frame(umi = mcols(readGrgList)$CB, - barcode = mcols(readGrgList)$UMI, - lengths = sum(width(readGrgList))) - df = df %>% mutate(id = row_number()) %>% group_by(barcode, umi) %>% summarise(primary.id = id[which.max(lengths)]) - readGrgList = readGrgList[df$primary.id] - print(length(readGrgList)) - end.ptm <- proc.time() - message("UMI deduplication Time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") + numUMIs = length(unique(mcols(readGrgList)$UMI)) + if(numUMIs > 100){ + df = data.frame(umi = mcols(readGrgList)$CB, + barcode = mcols(readGrgList)$UMI, + lengths = sum(width(readGrgList))) + df = df %>% mutate(id = row_number()) %>% group_by(barcode, umi) %>% summarise(primary.id = id[which.max(lengths)]) + readGrgList = readGrgList[df$primary.id] + end.ptm <- proc.time() + message("UMI deduplication Time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") + } else { + message("Only ", numUMIs, " detected. Not performing UMI deduplication. If this is unexpected, double check the --chemistry argument") + } + #readGrgList = c(readGrgList.filt, unname(readGrgList.keep)) } From 28f2ca84bcb4326cdef68119fef9a450ab24b95f Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 19 Apr 2024 14:42:04 +0800 Subject: [PATCH 098/189] Refactor CB to BC --- R/bambu-processReads.R | 12 ++++++------ R/prepareDataFromBam.R | 16 ++++++++-------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index bf9bebca..2b95ca93 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -68,15 +68,15 @@ bambu.processReads <- function(reads, annotations, genomeSequence, sampleNames = as.numeric(as.factor(sampleNames)) for(i in seq_along(readGrgList)){ if(!isFALSE(demultiplexed)){ - mcols(readGrgList[[i]])$CB = paste0(names(reads)[i], mcols(readGrgList[[i]])$CB) - } else{mcols(readGrgList[[i]])$CB = sampleNames[i]} - mcols(readGrgList[[i]])$CB = as.factor(mcols(readGrgList[[i]])$CB) + mcols(readGrgList[[i]])$BC = paste0(names(reads)[i], mcols(readGrgList[[i]])$BC) + } else{mcols(readGrgList[[i]])$BC = sampleNames[i]} + mcols(readGrgList[[i]])$BC = as.factor(mcols(readGrgList[[i]])$BC) } readGrgList = do.call(c, readGrgList) mcols(readGrgList)$id <- seq_along(readGrgList) if(!isFALSE(demultiplexed)){ - mcols(readGrgList)$sampleID = as.numeric(mcols(readGrgList)$CB) - } else {mcols(readGrgList)$sampleID = mcols(readGrgList)$CB} + mcols(readGrgList)$sampleID = as.numeric(mcols(readGrgList)$BC) + } else {mcols(readGrgList)$sampleID = mcols(readGrgList)$BC} readClassList <- constructReadClasses(readGrgList, genomeSequence = genomeSequence,annotations = annotations, readClass.outputDir = readClass.outputDir, stranded = stranded, min.readCount = min.readCount, @@ -85,7 +85,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode) metadata(readClassList)$samples = names(reads) - if(!isFALSE(demultiplexed))metadata(readClassList)$samples = levels(mcols(readGrgList)$CB) + if(!isFALSE(demultiplexed))metadata(readClassList)$samples = levels(mcols(readGrgList)$BC) # TODO return output # if (!is.null(readClass.outputDir)) { diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index 2fa2b027..c84b0012 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -41,18 +41,18 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, readGrgList[[counter]] <-grglist(alignmentInfo) if (!isFALSE(demultiplexed)){ if(isTRUE(demultiplexed)){ - mcols(readGrgList[[counter]])$CB <- ifelse(!is.na(mcols(alignmentInfo)$BC), mcols(alignmentInfo)$BC, + mcols(readGrgList[[counter]])$BC <- ifelse(!is.na(mcols(alignmentInfo)$BC), mcols(alignmentInfo)$BC, gsub("(^[GACT]+(?=_)).*", '\\1', x, perl = TRUE)) mcols(readGrgList[[counter]])$UMI <- ifelse(!is.na(mcols(alignmentInfo)$UG), mcols(alignmentInfo)$UG, gsub(".*((?<=_)[GACT]*(?=#)).*", '\\1', x, perl = TRUE)) } else{ - mcols(readGrgList[[counter]])$CB = "NA" + mcols(readGrgList[[counter]])$BC = "NA" mcols(readGrgList[[counter]])$UMI = "NA" - mcols(readGrgList[[counter]])$CB = readMap[,2][match(names(readGrgList[[counter]]),readMap[,1])] + mcols(readGrgList[[counter]])$BC = readMap[,2][match(names(readGrgList[[counter]]),readMap[,1])] mcols(readGrgList[[counter]])$UMI = readMap[,3][match(names(readGrgList[[counter]]),readMap[,1])] } - cells <- unique(c(cells, mcols(readGrgList[[counter]])$CB)) - mcols(readGrgList[[counter]])$CB <- factor(mcols(readGrgList[[counter]])$CB, levels = cells) + cells <- unique(c(cells, mcols(readGrgList[[counter]])$BC)) + mcols(readGrgList[[counter]])$BC <- factor(mcols(readGrgList[[counter]])$BC, levels = cells) umi <- unique(c(umi, mcols(readGrgList[[counter]])$UMI)) mcols(readGrgList[[counter]])$UMI <- factor(mcols(readGrgList[[counter]])$UMI, levels = umi) } @@ -82,10 +82,10 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, } # remove microexons of width 1bp from list readGrgList <- readGrgList[width(readGrgList) > 1] - numNoBCs = sum(mcols(readGrgList)$CB != "NA") + numNoBCs = sum(mcols(readGrgList)$BC != "NA") if(numNoBCs > 0){ message("Removing ", , " reads that were not assigned barcodes. If this is unexpected check the barcode map input") - readGrgList = readGrgList[mcols(readGrgList)$CB != "NA"] + readGrgList = readGrgList[mcols(readGrgList)$BC != "NA"] } if(cleanReads){ #extract duplicated reads from flexiplex to clean @@ -111,7 +111,7 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, start.ptm <- proc.time() numUMIs = length(unique(mcols(readGrgList)$UMI)) if(numUMIs > 100){ - df = data.frame(umi = mcols(readGrgList)$CB, + df = data.frame(umi = mcols(readGrgList)$BC, barcode = mcols(readGrgList)$UMI, lengths = sum(width(readGrgList))) df = df %>% mutate(id = row_number()) %>% group_by(barcode, umi) %>% summarise(primary.id = id[which.max(lengths)]) From 39e3862dfd53bc3ad497fa47525727945c16c17f Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 25 Apr 2024 14:52:07 +0800 Subject: [PATCH 099/189] Seperate umi dedup from cleanReads --- R/bambu-processReads.R | 8 ++++---- R/bambu.R | 4 ++-- R/prepareDataFromBam.R | 8 +++++--- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 2b95ca93..65ea4335 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -16,7 +16,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, readClass.outputDir=NULL, yieldSize=1000000, bpParameters, stranded=FALSE, verbose=FALSE, isoreParameters = setIsoreParameters(NULL), lowMemory=FALSE, trackReads = trackReads, fusionMode = fusionMode, - demultiplexed = FALSE, cleanReads = FALSE, sampleNames = NULL) { + demultiplexed = FALSE, cleanReads = TRUE, dedupUMI = FALSE, sampleNames = NULL) { genomeSequence <- checkInputSequence(genomeSequence) # ===# create BamFileList object from character #===# if (is(reads, "BamFile")) { @@ -62,7 +62,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode, - demultiplexed = demultiplexed, cleanReads = cleanReads, index = i)}, + demultiplexed = demultiplexed, cleanReads = cleanReads, dedupUMI = dedupUMI, index = i)}, BPPARAM = bpParameters) sampleNames = as.numeric(as.factor(sampleNames)) @@ -114,8 +114,8 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, readClass.outputDir = NULL, yieldSize = NULL, stranded = FALSE, min.readCount = 2, fitReadClassModel = TRUE, min.exonOverlap = 10, defaultModels = NULL, returnModel = FALSE, verbose = FALSE, lowMemory = FALSE, trackReads = FALSE, fusionMode = FALSE, demultiplexed = FALSE, - cleanReads = FALSE, index = 0) { - readGrgList <- prepareDataFromBam(bam.file[[1]], verbose = verbose, yieldSize = yieldSize, use.names = trackReads, demultiplexed = demultiplexed, cleanReads = cleanReads) + cleanReads = TRUE, dedupUMI = FALSE, index = 0) { + readGrgList <- prepareDataFromBam(bam.file[[1]], verbose = verbose, yieldSize = yieldSize, use.names = trackReads, demultiplexed = demultiplexed, cleanReads = cleanReads, dedupUMI = dedupUMI) warnings = c() warnings = seqlevelCheckReadsAnnotation(readGrgList, annotations) if(verbose & length(warnings) > 0) warning(paste(warnings,collapse = "\n")) diff --git a/R/bambu.R b/R/bambu.R index 3ebfe832..2a2c51d8 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -140,7 +140,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, assignDist = TRUE, quant = TRUE, stranded = FALSE, ncore = 1, yieldSize = NULL, trackReads = FALSE, returnDistTable = FALSE, lowMemory = FALSE, fusionMode = FALSE, verbose = FALSE, demultiplexed = FALSE, spatial = NULL, quantData = NULL, - sampleNames = NULL, cleanReads = FALSE) { + sampleNames = NULL, cleanReads = TRUE, dedupUMI = FALSE) { if(is.null(annotations)) { annotations = GRangesList() } else annotations <- checkInputs(annotations, reads, readClass.outputDir = rcOutDir, genomeSequence = genome, discovery = discovery) @@ -171,7 +171,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, bpParameters, stranded, verbose, isoreParameters, trackReads = trackReads, fusionMode = fusionMode, lowMemory = lowMemory, demultiplexed = demultiplexed, - sampleNames = sampleNames, cleanReads = cleanReads) + sampleNames = sampleNames, cleanReads = cleanReads, dedupUMI = dedupUMI) } #warnings = handleWarnings(readClassList, verbose) diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index c84b0012..a1f55f31 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -8,7 +8,7 @@ #' @importFrom GenomicRanges width #' @noRd prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, - use.names = FALSE, demultiplexed = FALSE, cleanReads = FALSE) { + use.names = FALSE, demultiplexed = FALSE, cleanReads = TRUE, dedupUMI = FALSE) { if (is(bamFile, "BamFile")) { if (!is.null(yieldSize)) { yieldSize(bamFile) <- yieldSize @@ -105,8 +105,10 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, df = df %>% mutate(id = row_number()) %>% group_by(name) %>% summarise(primary.id = id[which.min(clip5)]) readGrgList = unname(readGrgList[df$primary.id]) end.ptm <- proc.time() - message("Primary alignment selection Time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") + message("Primary alignment selection time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") + } + if(dedupUMI){ #UMI deduplication by barcode start.ptm <- proc.time() numUMIs = length(unique(mcols(readGrgList)$UMI)) @@ -117,7 +119,7 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, df = df %>% mutate(id = row_number()) %>% group_by(barcode, umi) %>% summarise(primary.id = id[which.max(lengths)]) readGrgList = readGrgList[df$primary.id] end.ptm <- proc.time() - message("UMI deduplication Time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") + message("UMI deduplication time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") } else { message("Only ", numUMIs, " detected. Not performing UMI deduplication. If this is unexpected, double check the --chemistry argument") } From 0295a42f25947732872fdbb5103f9702dbbe0c58 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 29 Apr 2024 11:44:03 +0800 Subject: [PATCH 100/189] write rowData to gtf --- R/readWrite.R | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/R/readWrite.R b/R/readWrite.R index 318da9f0..dee80fc3 100644 --- a/R/readWrite.R +++ b/R/readWrite.R @@ -112,9 +112,29 @@ writeToGTF <- function(annotation, file, geneIDs = NULL) { } else if (!is(annotation, "CompressedGRangesList")) { stop("The inputted GRangesList is of the wrong class.") } + NDR = NULL + txScore = NULL + txScore.noFit = NULL + novelGene = NULL + novelTranscript = NULL + txClassDescription = NULL df <- as_tibble(annotation) df$exon_rank <- paste('exon_number "', df$exon_rank, '";', sep = "") - if (missing(geneIDs)) { + if(!is.null(mcols(annotation)$NDR)){ + NDR = rep(mcols(annotation)$NDR, unname(elementNROWS(annotation))) + df$NDR <- paste('NDR "', as.character(NDR), '";', sep = "") + txScore = rep(mcols(annotation)$maxTxScore, unname(elementNROWS(annotation))) + df$txScore <- paste('maxTxScore "', as.character(txScore), '";', sep = "") + txScore.noFit = rep(mcols(annotation)$maxTxScore.noFit, unname(elementNROWS(annotation))) + df$txScore.noFit <- paste('maxTxScore.noFit "', as.character(txScore.noFit), '";', sep = "") + novelGene = rep(mcols(annotation)$novelGene, unname(elementNROWS(annotation))) + df$novelGene <- paste('novelGene "', as.character(novelGene), '";', sep = "") + novelTranscript = rep(mcols(annotation)$novelTranscript, unname(elementNROWS(annotation))) + df$novelTranscript <- paste('novelTranscript "', as.character(novelTranscript), '";', sep = "") + txClassDescription = rep(mcols(annotation)$txClassDescription, unname(elementNROWS(annotation))) + df$txClassDescription <- paste('txClassDescription "', as.character(txClassDescription), '";', sep = "") + } + if (is.null(geneIDs)) { if (!is.null(mcols(annotation, use.names = FALSE)$GENEID)) { geneIDs <- as_tibble(mcols(annotation, use.names = FALSE)[, c("TXNAME", "GENEID")]) @@ -127,7 +147,7 @@ writeToGTF <- function(annotation, file, geneIDs = NULL) { df$group_name <- paste('transcript_id "', df$group_name, '";', sep = "") df$GENEID <- paste('gene_id "', df$GENEID, '";', sep = "") dfExon <- mutate(df, source = "Bambu", feature = "exon", score = ".", - frame = ".", attributes = paste(GENEID, group_name, exon_rank)) %>% + frame = ".", attributes = paste(GENEID, group_name, exon_rank, NDR, txScore, txScore.noFit, novelGene, novelTranscript, txClassDescription )) %>% select(seqnames, source, feature, start, end, score, strand, frame, attributes, group_name) dfTx <- as.data.frame(range(ranges(annotation))) @@ -136,9 +156,16 @@ writeToGTF <- function(annotation, file, geneIDs = NULL) { dfTx$group_name <- paste('transcript_id "', dfTx$group_name, '";', sep = "") dfTx$GENEID <- paste('gene_id "', dfTx$GENEID, '";', sep = "") - + if(!is.null(mcols(annotation)$NDR)) { + dfTx$NDR <- paste('NDR "', mcols(annotation)$NDR, '";', sep = "") + dfTx$txScore <- paste('txScore "', mcols(annotation)$txScore, '";', sep = "") + dfTx$txScore.noFit <- paste('txScore.noFit "', mcols(annotation)$txScore.noFit, '";', sep = "") + dfTx$novelGene <- paste('novelGene "', mcols(annotation)$novelGene, '";', sep = "") + dfTx$novelTranscript <- paste('novelTranscript "', mcols(annotation)$novelTranscript, '";', sep = "") + dfTx$txClassDescription <- paste('txClassDescription "', mcols(annotation)$txClassDescription, '";', sep = "") + } dfTx <- mutate(dfTx,source = "Bambu", feature = "transcript", score = ".", - frame = ".", attributes = paste(GENEID, group_name)) %>% + frame = ".", attributes = paste(GENEID, group_name, NDR, txScore, txScore.noFit, novelGene, novelTranscript, txClassDescription )) %>% select(seqnames, source, feature, start, end, score, strand, frame, attributes, group_name) From ddc0ed95384cf933c665d84ecbfb142506b61319 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 29 Apr 2024 11:44:30 +0800 Subject: [PATCH 101/189] read in attributes as rowData --- R/prepareAnnotations_utilityFunctions.R | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/R/prepareAnnotations_utilityFunctions.R b/R/prepareAnnotations_utilityFunctions.R index ffa2f48d..bee77db6 100644 --- a/R/prepareAnnotations_utilityFunctions.R +++ b/R/prepareAnnotations_utilityFunctions.R @@ -27,6 +27,21 @@ prepareAnnotationsFromGTF <- function(file) { data$strand[data$strand == "."] <- "*" data$GENEID <- gsub("gene_id (.*?);.*", "\\1", data$attribute) data$TXNAME <- gsub(".*transcript_id (.*?);.*", "\\1", data$attribute) + data$NDR <- NULL + data$maxTxScore <- NULL + data$maxTxScore.noFit <- NULL + data$novelGene = NULL + data$novelTranscript = NULL + data$txClassDescription = NULL + hasNDR = all(grepl("NDR ", data$attribute)) + if(hasNDR) { + data$NDR <- as.numeric(gsub(".*NDR (.*?);.*", "\\1", data$attribute)) + data$maxTxScore <- as.numeric(gsub(".*maxTxScore (.*?);.*", "\\1", data$attribute)) + data$maxTxScore.noFit <- as.numeric(gsub(".*maxTxScore.noFit (.*?);.*", "\\1", data$attribute)) + data$novelGene <- as.logical(gsub(".*novelGene (.*?);.*", "\\1", data$attribute)) + data$novelTranscript <- as.logical(gsub(".*novelTranscript (.*?);.*", "\\1", data$attribute)) + data$txClassDescription <- gsub(".*txClassDescription (.*?);.*", "\\1", data$attribute) + } multiTxCheck <- as_tibble(data) %>% select(seqname, GENEID) %>% distinct() %>% group_by(GENEID) %>% mutate(n=n(), id=paste0('-',row_number())) if(any(multiTxCheck$n>1)) { # identical TXNAMES @@ -45,6 +60,9 @@ prepareAnnotationsFromGTF <- function(file) { data$GENEID <- uniqueNamesTbl$gene_unique } geneData <- unique(data[, c("TXNAME", "GENEID")]) + geneData <- if(hasNDR) { unique(data[, c("TXNAME", "GENEID", "NDR", "maxTxScore", + "maxTxScore.noFit", "novelGene", "novelTranscript", "txClassDescription")]) + } else {unique(data[, c("TXNAME", "GENEID")])} grlist <- makeGRangesListFromDataFrame( data[, c("seqname", "start", "end", "strand", "TXNAME")], split.field = "TXNAME", keep.extra.columns = TRUE) From 31ca44dc6acf75930e60c4f73d30e4c3b881d066 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 29 Apr 2024 11:54:49 +0800 Subject: [PATCH 102/189] Ensure assays stays a sparse matrix even if empty --- R/bambu_utilityFunctions.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index db60b55e..284cc8e8 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -236,7 +236,7 @@ combineCountSes <- function(countsSe, annotations){ j = unlist(lapply(seq_along(countsVecList), function(j){rep(j, length(countsVecList[[j]]@i))})), x = unlist(lapply(countsVecList, function(j){j@x})), dims = c(length(countsVecList[[1]]), length(countsVecList))) - if(all(is.na(countsMat))){countsMat = matrix(0,nrow(countsMat),ncol(countsMat))} + if(all(is.na(countsMat))){countsMat = sparseMatrix(i=NULL, j = NULL, dims = c(length(countsVecList[[1]]), length(countsVecList)))} colnames(countsMat) <- sampleNames if (k == "incompatibleCounts"){ rownames(countsMat) = unique(mcols(annotations)$GENEID) From 0336e6bc04de6bcc5043fc2d5d5896d48b05ec92 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 29 Apr 2024 14:23:33 +0800 Subject: [PATCH 103/189] Fix flexible barcode lengths --- R/prepareDataFromBam.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index a1f55f31..419aa165 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -42,9 +42,9 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, if (!isFALSE(demultiplexed)){ if(isTRUE(demultiplexed)){ mcols(readGrgList[[counter]])$BC <- ifelse(!is.na(mcols(alignmentInfo)$BC), mcols(alignmentInfo)$BC, - gsub("(^[GACT]+(?=_)).*", '\\1', x, perl = TRUE)) + gsub("(^[GACT]+(?=_)).*", '\\1', names(readGrgList[[counter]]), perl = TRUE)) mcols(readGrgList[[counter]])$UMI <- ifelse(!is.na(mcols(alignmentInfo)$UG), mcols(alignmentInfo)$UG, - gsub(".*((?<=_)[GACT]*(?=#)).*", '\\1', x, perl = TRUE)) + gsub(".*((?<=_)[GACT]*(?=#)).*", '\\1', names(readGrgList[[counter]]), perl = TRUE)) } else{ mcols(readGrgList[[counter]])$BC = "NA" mcols(readGrgList[[counter]])$UMI = "NA" From 6790ce7e517d464b418e2148bc80375c20c4b95a Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 29 Apr 2024 16:47:14 +0800 Subject: [PATCH 104/189] fix importing bam --- R/bambu-processReads.R | 2 +- R/prepareDataFromBam.R | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 65ea4335..08da3ed3 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -68,7 +68,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, sampleNames = as.numeric(as.factor(sampleNames)) for(i in seq_along(readGrgList)){ if(!isFALSE(demultiplexed)){ - mcols(readGrgList[[i]])$BC = paste0(names(reads)[i], mcols(readGrgList[[i]])$BC) + mcols(readGrgList[[i]])$BC = paste0(names(reads)[i], '_', mcols(readGrgList[[i]])$BC) } else{mcols(readGrgList[[i]])$BC = sampleNames[i]} mcols(readGrgList[[i]])$BC = as.factor(mcols(readGrgList[[i]])$BC) } diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index 419aa165..4df626ec 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -82,10 +82,10 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, } # remove microexons of width 1bp from list readGrgList <- readGrgList[width(readGrgList) > 1] - numNoBCs = sum(mcols(readGrgList)$BC != "NA") + numNoBCs = sum(mcols(readGrgList)$BC == "NA") if(numNoBCs > 0){ - message("Removing ", , " reads that were not assigned barcodes. If this is unexpected check the barcode map input") - readGrgList = readGrgList[mcols(readGrgList)$BC != "NA"] + message("Removing ", numNoBCs, " reads that were not assigned barcodes. If this is unexpected check the barcode map input") + readGrgList = readGrgList[mcols(readGrgList)$BC == "NA"] } if(cleanReads){ #extract duplicated reads from flexiplex to clean From 8bbb0a182d8db4b77b4fd9923474b94f28f18954 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 29 Apr 2024 16:49:28 +0800 Subject: [PATCH 105/189] importBambuOutput function --- R/bambu.R | 9 ++++++++- R/readWrite.R | 45 ++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 2a2c51d8..cb462195 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -229,11 +229,18 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, # annotations) # if (returnDistTable) metadata(seOutput)$distTable = metadata(readClassDist)$distTable + df = DataFrame(sampleName = colnames(countsSe)) + if(demultiplexed){ + df = DataFrame(id = colnames(countsSe), + sampleName = gsub("_[^_]+$","", colnames(countsSe), perl = TRUE), + Barcode = gsub(".*_(?=[^_]*$)","", colnames(countsSe), perl = TRUE)) + } if(!is.null(spatial)){ colData(countsSe) <- DataFrame(read.table(gzfile(spatial), col.names = c("Barcode", "x_coordinate", "y_coordinate")) %>% filter(Barcode %in% colnames(countsSe)), row.names = colnames(countsSe)) } - + colData(countsSe) = df + colnames(countsSe) = df[,1] return(countsSe) } } diff --git a/R/readWrite.R b/R/readWrite.R index dee80fc3..e3b7179a 100644 --- a/R/readWrite.R +++ b/R/readWrite.R @@ -30,7 +30,9 @@ writeBambuOutput <- function(se, path, prefix = "") { "extended_annotations.gtf", sep = "") gtf <- writeToGTF(annotation = transcript_grList, file = transcript_gtffn) - + + utils::write.table(colData(se), file = paste0(outdir, "/sampleData.tsv"), + sep = "\t", quote = FALSE, row.names = FALSE, col.names = TRUE) for(d in names(assays(se))){ writeCountsOutput(se, varname=d, feature='transcript',outdir, prefix) @@ -39,12 +41,12 @@ writeBambuOutput <- function(se, path, prefix = "") { seGene <- transcriptToGeneExpression(se) writeCountsOutput(seGene, varname='counts', feature='gene',outdir, prefix) + utils::write.table(paste0(colnames(se), "-1"), file = paste0(outdir, "barcodes.tsv"), quote = FALSE, row.names = FALSE, col.names = FALSE) txANDGenes <- data.table(as.data.frame(rowData(se))[,c("TXNAME","GENEID")]) utils::write.table(txANDGenes, file = paste0(outdir, "txANDgenes.tsv"), sep = "\t", quote = FALSE, row.names = FALSE, col.names = FALSE) - utils::write.table(paste0(colnames(se), "-1"), file = paste0(outdir, "barcodes.tsv"), quote = FALSE, row.names = FALSE, col.names = FALSE) utils::write.table(names(seGene), file = paste0(outdir, "genes.tsv"), - sep = "\t", quote = FALSE, row.names = FALSE, col.names = FALSE) + sep = "\t", quote = FALSE, row.names = FALSE, col.names = FALSE) R.utils::gzip(paste0(outdir, "txANDgenes.tsv")) R.utils::gzip(paste0(outdir, "barcodes.tsv")) @@ -232,3 +234,40 @@ readFromGTF <- function(file, keep.extra.columns = NULL){ } return(grlist) } + +#' @title Read in Bambu results from writeBambuOutput() into se file +#' @param path the destination of the output files +#' (gtf, transcript counts, and gene counts) +#' @param prefixes the prefix of the output files +#' @details The function will read in the output from Bambu as a sumerized experiment object. +#' This SE object can be used for downstream processes. +#' @export +#' @examples +#' se <- importBambuResults(path = "/path/to/bambu/output/", +#' prefixes = c("rep1", "rep2") +#' )) +#' path <- tempdir() +#' writeBambuOutput(se, path) +importBambuResults <- function(path, prefixes = NA){ + annotations = prepareAnnotations(paste0(path, "/extended_annotations.gtf")) + counts = readMM(paste0(path, "/counts_transcript.mtx")) + CPM = readMM(paste0(path, "/CPM_transcript.mtx")) + fullLengthCounts = readMM(paste0(path, "/fullLengthCounts_transcript.mtx")) + uniqueCounts = readMM(paste0(path, "/uniqueCounts_transcript.mtx")) + incompatibleCounts = readMM(paste0(path, "/incompatibleCounts.mtx")) + barcodes = read.table(paste0(path, "/barcodes.tsv")) + geneIds = read.table(paste0(path, "/genes.tsv")) + txIds = read.table(paste0(path, "/txANDgenes.tsv")) + colData = read.table(paste0(path, "/sampleData.tsv"), header = TRUE) + rownames(incompatibleCounts) = geneIds[,1] + + countsSe <- SummarizedExperiment(assays = SimpleList(counts = counts, + CPM = CPM, + fullLengthCounts = fullLengthCounts, + uniqueCounts = uniqueCounts)) + metadata(countsSe)$incompatibleCounts <- incompatibleCounts + rowRanges(countsSe) <- annotations + colData(countsSe) = DataFrame(colData) + colnames(countsSe) = colData[,1] + return(countsSe) +} \ No newline at end of file From e90575570fa36e3348bda96e8deeed62b22e6d51 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 30 Apr 2024 11:23:31 +0800 Subject: [PATCH 106/189] writeBambuOutput rights incompatibleCounts and can seperate samples --- R/readWrite.R | 46 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/R/readWrite.R b/R/readWrite.R index e3b7179a..7cc5b783 100644 --- a/R/readWrite.R +++ b/R/readWrite.R @@ -16,7 +16,7 @@ #' )) #' path <- tempdir() #' writeBambuOutput(se, path) -writeBambuOutput <- function(se, path, prefix = "") { +writeBambuOutput <- function(se, path, prefix = "", seperateSamples = FALSE) { if (missing(se) | missing(path)) { stop("Both summarizedExperiment object from bambu and the path for the output files are required.") @@ -35,23 +35,47 @@ writeBambuOutput <- function(se, path, prefix = "") { sep = "\t", quote = FALSE, row.names = FALSE, col.names = TRUE) for(d in names(assays(se))){ writeCountsOutput(se, varname=d, - feature='transcript',outdir, prefix) - print(d) + feature='transcript',outdir, prefix) + print(d) } + #write incompatible counts + estimates = metadata(se)$incompatibleCounts + estimatesfn <- paste(outdir, prefix, "incompatibleCounts.mtx", sep = "") + Matrix::writeMM(estimates, estimatesfn) seGene <- transcriptToGeneExpression(se) writeCountsOutput(seGene, varname='counts', feature='gene',outdir, prefix) - - utils::write.table(paste0(colnames(se), "-1"), file = paste0(outdir, "barcodes.tsv"), quote = FALSE, row.names = FALSE, col.names = FALSE) + #utils::write.table(paste0(colnames(se), "-1"), file = paste0(outdir, "barcodes.tsv"), quote = FALSE, row.names = FALSE, col.names = FALSE) + #R.utils::gzip(paste0(outdir, "barcodes.tsv")) txANDGenes <- data.table(as.data.frame(rowData(se))[,c("TXNAME","GENEID")]) utils::write.table(txANDGenes, file = paste0(outdir, "txANDgenes.tsv"), sep = "\t", quote = FALSE, row.names = FALSE, col.names = FALSE) utils::write.table(names(seGene), file = paste0(outdir, "genes.tsv"), sep = "\t", quote = FALSE, row.names = FALSE, col.names = FALSE) - R.utils::gzip(paste0(outdir, "txANDgenes.tsv")) - R.utils::gzip(paste0(outdir, "barcodes.tsv")) - R.utils::gzip(paste0(outdir, "genes.tsv")) - + #R.utils::gzip(paste0(outdir, "txANDgenes.tsv")) + #R.utils::gzip(paste0(outdir, "genes.tsv")) + + #If there are multiple samples (when demultiplexed), seperate each sample into its own directory + if(seperateSamples){ + fullSe = se + for(sampleName in unique(colData(fullSe)$sampleName)){ + dir.create(file.path(outdir, sampleName), showWarnings = FALSE) + se = fullSe[,colData(fullSe)$sampleName == sampleName] + metadata(se)$incompatibleCounts = metadata(se)$incompatibleCounts[,colData(fullSe)$sampleName == sampleName] + for(d in names(assays(se))){ + writeCountsOutput(se, varname=d, + feature='transcript',outdir=paste0(outdir, sampleName,"/"), prefix) + } + estimates = metadata(se)$incompatibleCounts + estimatesfn <- paste(outdir, "/", sampleName,"/", prefix, "incompatibleCounts.mtx", sep = "") + Matrix::writeMM(estimates, estimatesfn) + seGene <- transcriptToGeneExpression(se) + writeCountsOutput(seGene, varname='counts', feature='gene',paste0(outdir, sampleName,"/"), prefix) + utils::write.table(colData(se), file = paste0(outdir, "/", sampleName, "/sampleData.tsv"), + sep = "\t", quote = FALSE, row.names = FALSE, col.names = TRUE) + #utils::write.table(paste0(colnames(se), "-1"), file = paste0(outdir, "barcodes.tsv"), quote = FALSE, row.names = FALSE, col.names = FALSE) + } + } } } @@ -80,12 +104,12 @@ writeCountsOutput <- function(se, varname = "counts", if (feature == "transcript"){ estimatesfn <- paste(outdir, prefix, varname,"_",feature,".mtx", sep = "") Matrix::writeMM(estimates, estimatesfn) - R.utils::gzip(estimatesfn) + #R.utils::gzip(estimatesfn) } else{ estimatesfn <- paste(outdir, prefix, varname,"_",feature,".mtx", sep = "") Matrix::writeMM(estimates, estimatesfn) - R.utils::gzip(estimatesfn) + #R.utils::gzip(estimatesfn) } } } From c568679713ce880409a4256c5c742f43dbcc82f9 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 2 May 2024 09:30:34 +0800 Subject: [PATCH 107/189] clean up warnings --- R/bambu-processReads.R | 11 ++++++----- R/bambu-quantify.R | 2 +- R/bambu.R | 32 +++++++++++++++++++++++++------- R/bambu_utilityFunctions.R | 20 +++++++++++++++++++- 4 files changed, 51 insertions(+), 14 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 08da3ed3..1da9ec9c 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -116,9 +116,10 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, verbose = FALSE, lowMemory = FALSE, trackReads = FALSE, fusionMode = FALSE, demultiplexed = FALSE, cleanReads = TRUE, dedupUMI = FALSE, index = 0) { readGrgList <- prepareDataFromBam(bam.file[[1]], verbose = verbose, yieldSize = yieldSize, use.names = trackReads, demultiplexed = demultiplexed, cleanReads = cleanReads, dedupUMI = dedupUMI) + print(paste0("Number of alignments/reads: ",length(readGrgList))) warnings = c() warnings = seqlevelCheckReadsAnnotation(readGrgList, annotations) - if(verbose & length(warnings) > 0) warning(paste(warnings,collapse = "\n")) + if(verbose & length(warnings) > 0) {warning(paste(warnings,collapse = "\n"))} #check seqlevels for consistency, drop ranges not present in genomeSequence refSeqLevels <- seqlevels(genomeSequence) if (!all(seqlevels(readGrgList) %in% refSeqLevels)) { @@ -129,14 +130,14 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, "reference genome sequence, annotations without reference genomic sequence ", "are dropped") warnings = c(warnings, warningText) - if(verbose) warning(warningText) + if(verbose){warning(warningText)} annotations <- keepSeqlevels(annotations, value = refSeqLevels, pruning.mode = "coarse") } warningText = paste0("not all chromosomes from reads present in reference ", "genome sequence, reads without reference chromosome sequence are dropped") warnings = c(warnings, warningText) - if(verbose) warning(warningText) + if(verbose){warning(warningText)} readGrgList <- keepSeqlevels(readGrgList, value = refSeqLevels, pruning.mode = "coarse") # reassign Ids after seqlevels are dropped @@ -151,14 +152,14 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, "genomic regions. These reads will be dropped. Check you are using the ", "same genome used for the alignment") warnings = c(warnings, warningText) - if(verbose) warning(warningText) + if(verbose){warning(warningText)} } ### add ### # reassign Ids after seqlevels are dropped mcols(readGrgList)$id <- seq_along(readGrgList) ### add ### - + print(paste0("Number of post-filter alignments/reads: ",length(readGrgList))) if(length(readGrgList) == 0) { stop("No reads left after filtering.") } diff --git a/R/bambu-quantify.R b/R/bambu-quantify.R index 8dbbfacb..4b125b8b 100644 --- a/R/bambu-quantify.R +++ b/R/bambu-quantify.R @@ -20,7 +20,7 @@ bambu.quantify <- function(readClassDt, countMatrix, incompatibleCountMatrix, tx fullLengthCounts = as(round(counts$fullLengthCounts,sig.digit), "sparseVector"), uniqueCounts = as(round(counts$uniqueCounts,sig.digit), "sparseVector")) end.ptm <- proc.time() - message("bambu.quantify ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") + if (verbose) message("bambu.quantify ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") return(seOutput) } diff --git a/R/bambu.R b/R/bambu.R index cb462195..4571459b 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -143,7 +143,8 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, sampleNames = NULL, cleanReads = TRUE, dedupUMI = FALSE) { if(is.null(annotations)) { annotations = GRangesList() } else annotations <- checkInputs(annotations, reads, - readClass.outputDir = rcOutDir, genomeSequence = genome, discovery = discovery) + readClass.outputDir = rcOutDir, genomeSequence = genome, discovery = discovery, + sampleNames = sampleNames, spatial = spatial) isoreParameters <- setIsoreParameters(isoreParameters = opt.discovery) #below line is to be compatible with earlier version of running bambu if(!is.null(isoreParameters$max.txNDR)) NDR = isoreParameters$max.txNDR @@ -167,9 +168,9 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, message("--- Start generating read class files ---") readClassList <- bambu.processReads(reads, annotations, genomeSequence = genome, - readClass.outputDir = rcOutDir, yieldSize, - bpParameters, stranded, verbose, - isoreParameters, trackReads = trackReads, fusionMode = fusionMode, + readClass.outputDir = rcOutDir, yieldSize = yieldSize, + bpParameters = bpParameters, stranded = stranded, verbose = verbose, + isoreParameters = isoreParameters, trackReads = trackReads, fusionMode = fusionMode, lowMemory = lowMemory, demultiplexed = demultiplexed, sampleNames = sampleNames, cleanReads = cleanReads, dedupUMI = dedupUMI) } @@ -235,9 +236,26 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, sampleName = gsub("_[^_]+$","", colnames(countsSe), perl = TRUE), Barcode = gsub(".*_(?=[^_]*$)","", colnames(countsSe), perl = TRUE)) } - if(!is.null(spatial)){ - colData(countsSe) <- DataFrame(read.table(gzfile(spatial), col.names = c("Barcode", "x_coordinate", "y_coordinate")) %>% - filter(Barcode %in% colnames(countsSe)), row.names = colnames(countsSe)) + if(!is.null(spatial)){ + df$x_coordinate = NA + df$y_coordinate = NA + #load in all whitelist info, is one file or a vector of paths? + if(length(spatial)==1){ + bc_coords = DataFrame(read.table(gzfile(spatial), col.names = c("Barcode", "x_coordinate", "y_coordinate"))) + bcMatch = match(df$Barcode, bc_coords$Barcode) + df$x_coordinate = bc_coords$x_coordinate[bcMatch] + df$y_coordinate = bc_coords$y_coordinate[bcMatch] + } else{ + spatial.unique = unique(spatial) + for(whitelist in spatial.unique){ + i = which(spatial.unique==whitelist) + bc_coords = DataFrame(read.table(gzfile(whitelist), col.names = c("Barcode", "x_coordinate", "y_coordinate"))) + bcSampleIndex = df$sampleName %in% sampleNames[i] + bcMatch = match(df$Barcode[bcSampleIndex], bc_coords$Barcode) + df$x_coordinate[bcSampleIndex] = bc_coords$x_coordinate[bcMatch] + df$y_coordinate[bcSampleIndex] = bc_coords$y_coordinate[bcMatch] + } + } } colData(countsSe) = df colnames(countsSe) = df[,1] diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index 284cc8e8..b7910293 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -74,7 +74,7 @@ updateParameters <- function(Parameters, Parameters.default) { #' @param readClass.outputDir path to readClass output directory #' @importFrom methods is #' @noRd -checkInputs <- function(annotations, reads, readClass.outputDir, genomeSequence, discovery){ +checkInputs <- function(annotations, reads, readClass.outputDir, genomeSequence, discovery, sampleNames, spatial){ # ===# Check annotation inputs #===# if (!is.null(annotations)) { if (is(annotations, "CompressedGRangesList")) { @@ -138,6 +138,24 @@ checkInputs <- function(annotations, reads, readClass.outputDir, genomeSequence, fuzzy, recommend to provide the path as a string variable to avoid use of Rsamtools for opening.") } + + #check single-cell and spatial inputs match + if(!is.null(sampleNames)){ + if(length(reads)!=length(sampleNames)){ + stop("There are not the same number of sampleNames as input files to reads. ", + "Make sure these two arguments are vectors of the same length") + } + } + + if(!is.null(spatial)){ + #if(!all(grepl(".tsv^", spatial))){stop("Not all paths for spatial are .tsv files")} + if(length(spatial)==1 & length(reads)>1){ + warning("Using the same whitelist and coordinates for all input samples") + } else if(length(reads)!=length(spatial)){ + stop("There are not the same number spatial whitelist paths as input files to reads. ", + "Make sure these two arguments are vectors of the same length") + } + } return(annotations) } From 0b47cb8a11e827e4ba9d02bcb2bcae2eef6e9cf3 Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 26 Jun 2024 13:55:10 +0800 Subject: [PATCH 108/189] Report all possible transripts if NDR = 1 --- R/bambu-extendAnnotations-utilityExtend.R | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index b675f2c4..e11237d6 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -64,7 +64,8 @@ filterTranscripts <- function(combinedTranscripts, min.sampleNumber){ combinedTranscripts$NSampleTxScore >= min.sampleNumber) & ( combinedTranscripts$NSampleReadProp >= min.sampleNumber) } - combinedTranscripts = combinedTranscripts[filterSet,] + #combinedTranscripts = combinedTranscripts[filterSet,] + combinedTranscripts$maxTxScore[!filterSet] = 0 return(combinedTranscripts) } @@ -83,8 +84,10 @@ filterTranscriptsByAnnotation <- function(rowDataCombined, annotationGrangesList if (remove.subsetTx) { # (1) based on compatibility with annotations notCompatibleIds <- which(!grepl("compatible", rowDataCombined$readClassType) | rowDataCombined$readClassType == "equal:compatible") #keep equal for FDR calculation - exonRangesCombined <- exonRangesCombined[notCompatibleIds] - rowDataCombined <- rowDataCombined[notCompatibleIds,] + #exonRangesCombined <- exonRangesCombined[notCompatibleIds] + #rowDataCombined <- rowDataCombined[notCompatibleIds,] + rowDataCombined$maxTxScore[grepl("compatible", rowDataCombined$readClassType) & + rowDataCombined$readClassType != "equal:compatible"]=0 } #(2) remove transcripts below NDR threshold/identical junctions to annotations rowDataCombined = calculateNDROnTranscripts(rowDataCombined, @@ -178,6 +181,7 @@ calculateNDROnTranscripts <- function(combinedTranscripts, useTxScore = FALSE){ "for NDR precision stabilization.") message("NDR will be approximated as: (1 - Transcript Model Prediction Score)") } else combinedTranscripts$NDR = calculateNDR(combinedTranscripts$maxTxScore, equal) + combinedTranscripts$NDR[combinedTranscripts$maxTxScore==0] = 1 return(combinedTranscripts) } From fbe8ee3ddfe875be134baebe8c099c04cb71e975 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 22 Jul 2024 11:29:24 +0800 Subject: [PATCH 109/189] fix bug when reading in barcode map from file --- R/prepareDataFromBam.R | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index 4df626ec..864f022c 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -46,10 +46,12 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, mcols(readGrgList[[counter]])$UMI <- ifelse(!is.na(mcols(alignmentInfo)$UG), mcols(alignmentInfo)$UG, gsub(".*((?<=_)[GACT]*(?=#)).*", '\\1', names(readGrgList[[counter]]), perl = TRUE)) } else{ - mcols(readGrgList[[counter]])$BC = "NA" + mcols(readGrgList[[counter]])$BC = NA mcols(readGrgList[[counter]])$UMI = "NA" mcols(readGrgList[[counter]])$BC = readMap[,2][match(names(readGrgList[[counter]]),readMap[,1])] - mcols(readGrgList[[counter]])$UMI = readMap[,3][match(names(readGrgList[[counter]]),readMap[,1])] + if(ncol(readMap)>2){ + mcols(readGrgList[[counter]])$UMI = readMap[,3][match(names(readGrgList[[counter]]),readMap[,1])] + } } cells <- unique(c(cells, mcols(readGrgList[[counter]])$BC)) mcols(readGrgList[[counter]])$BC <- factor(mcols(readGrgList[[counter]])$BC, levels = cells) @@ -82,10 +84,12 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, } # remove microexons of width 1bp from list readGrgList <- readGrgList[width(readGrgList) > 1] - numNoBCs = sum(mcols(readGrgList)$BC == "NA") + print(head(mcols(readGrgList))) + numNoBCs = sum(is.na(mcols(readGrgList)$BC)) + print(numNoBCs) if(numNoBCs > 0){ message("Removing ", numNoBCs, " reads that were not assigned barcodes. If this is unexpected check the barcode map input") - readGrgList = readGrgList[mcols(readGrgList)$BC == "NA"] + readGrgList = readGrgList[!is.na(mcols(readGrgList)$BC)] } if(cleanReads){ #extract duplicated reads from flexiplex to clean From 73b0b8d8c2f168b76aa90772aea5ab87ee8ed1e1 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 1 Aug 2024 14:58:05 +0800 Subject: [PATCH 110/189] catch error when no drate is calculated due to low reads --- R/bambu-quantify_utilityFunctions.R | 1 + 1 file changed, 1 insertion(+) diff --git a/R/bambu-quantify_utilityFunctions.R b/R/bambu-quantify_utilityFunctions.R index dbcaae63..0751e4ae 100644 --- a/R/bambu-quantify_utilityFunctions.R +++ b/R/bambu-quantify_utilityFunctions.R @@ -281,6 +281,7 @@ modifyAvaluewithDegradation_rate <- function(tmp, d_rate, d_mode){ tmp[which(multi_align) , aval := ifelse(equal, 1 - sum(.SD[which(!equal)]$rcWidth*d_rate/1000), rcWidth*d_rate/1000), by = list(gene_sid,txid)] + if(is.na(d_rate)) d_rate = 0 if (d_rate == 0) { tmp[, par_status := all(!equal & multi_align), by = list(eqClassId, gene_sid)] From 9c2801be6524647c5d70b497d81fc55056ddbb16 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 13 Aug 2024 12:03:03 +0800 Subject: [PATCH 111/189] return non em counts before quant step fix use of placeholder variable name --- R/bambu-quantify_utilityFunctions.R | 29 +++++++++++++++++++++++++++++ R/bambu.R | 7 +++++++ 2 files changed, 36 insertions(+) diff --git a/R/bambu-quantify_utilityFunctions.R b/R/bambu-quantify_utilityFunctions.R index 0751e4ae..872eb865 100644 --- a/R/bambu-quantify_utilityFunctions.R +++ b/R/bambu-quantify_utilityFunctions.R @@ -522,3 +522,32 @@ NULL library.dynam.unload("bambu", libpath) } +geneCountsFromQuantData <- function(quantData, annotations){ + x = quantData$readClassDt %>% group_by(eqClassId) %>% + summarise(nobs= nobs[1], + gene_sid = gene_sid[1], + eqClass.match = eqClass.match[1], + txid = txid[1]) %>% + filter(!is.na(eqClass.match)) + + #combine counts by gene + nobs = quantData$countMatrix[x$eqClass.match,] + nobs.gene = sparse.model.matrix(~ factor(x$gene_sid) - 1) + nobs = t(nobs.gene) %*% nobs + + #convert the relative gene index to the consistant gene id + rownames(nobs) = gsub("factor\\(x\\$gene_sid\\)", "", rownames(nobs)) + rownames(nobs) = x$txid[match(rownames(nobs), x$gene_sid)] + rownames(nobs) = mcols(annotations)$GENEID[as.numeric(rownames(nobs))] + genes = levels(factor(unique(mcols(annotations)$GENEID))) + rownames(quantData$incompatibleCountMatrix) = genes[as.numeric(rownames(quantData$incompatibleCountMatrix))] + + #combine the read class gene counts with incompatible counts + geneids = union(rownames(nobs), rownames(quantData$incompatibleCountMatrix)) + geneMat = sparseMatrix(length(geneids), ncol(nobs), x = 0) + rownames(geneMat) = geneids + geneMat[rownames(nobs),] = nobs + geneMat[rownames(quantData$incompatibleCountMatrix),] = geneMat[rownames(quantData$incompatibleCountMatrix),] + quantData2$incompatibleCountMatrix + + return(geneMat) +} \ No newline at end of file diff --git a/R/bambu.R b/R/bambu.R index 4571459b..0a343288 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -201,6 +201,13 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, quantData$readClassDt = quantData$readClassDt %>% group_by(eqClassId, gene_sid) %>% mutate(multi_align = length(unique(txid))>1) %>% ungroup() %>% mutate(aval = 1) %>% data.table() + + #return non-em counts + quantData$geneCounts = geneCountsFromQuantData(quantData, annotations) + x = quantData$readClassDt %>% filter(!multi_align & !is.na(eqClass.match)) + quantData$uniqueCounts = quantData$countMatrix[x$eqClass.match,] + rownames(quantData$uniqueCounts) = names(annotations)[x$txid] + if (!quant) return(quantData) } From 1176eca0cdf1a78b8e298c6d7f8ba2fd799da999 Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 21 Aug 2024 15:36:42 +0800 Subject: [PATCH 112/189] Fix the normal discovery impact cluster discovery --- R/bambu.R | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 5e2db7fc..39e17886 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -178,9 +178,9 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, if (!discovery & !assignDist & !quant) return(readClassList) if (discovery) { message("--- Start extending annotations ---") - annotations <- bambu.extendAnnotations(readClassList, annotations, NDR, + extendedAnnotations <- bambu.extendAnnotations(readClassList, annotations, NDR, isoreParameters, stranded, bpParameters, fusionMode, verbose) - metadata(annotations)$warnings = warnings + metadata(extendedAnnotations)$warnings = warnings #### split rcf into clusters if(!is.null(clustering)){ @@ -226,14 +226,14 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, annotations.clusters[[names(clustering)[i]]] <- bambu.extendAnnotations(list(rcf.filt), annotations, NDR, isoreParameters, stranded, bpParameters, fusionMode, verbose) } - print("test") if(length(rcfs.clusters)>0){ print("--- Merging all individual clusters ---") annotations.clusters[["merged"]] <- bambu.extendAnnotations(rcfs.clusters, annotations, NDR, isoreParameters, stranded, bpParameters, fusionMode, verbose) } - metadata(annotations)$clusters = annotations.clusters + metadata(extendedAnnotations)$clusters = annotations.clusters } + annotations = extendedAnnotations if (!quant & !assignDist) return(annotations) } From 1f471a307068478a83c2f0798bf31d03f46bdd68 Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 23 Aug 2024 14:58:16 +0800 Subject: [PATCH 113/189] Enable clusters to be assigned before EM tidy up typo fix --- R/bambu-quantify_utilityFunctions.R | 2 +- R/bambu.R | 42 ++++++++++++++++++++++------- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/R/bambu-quantify_utilityFunctions.R b/R/bambu-quantify_utilityFunctions.R index 872eb865..2b54aee5 100644 --- a/R/bambu-quantify_utilityFunctions.R +++ b/R/bambu-quantify_utilityFunctions.R @@ -547,7 +547,7 @@ geneCountsFromQuantData <- function(quantData, annotations){ geneMat = sparseMatrix(length(geneids), ncol(nobs), x = 0) rownames(geneMat) = geneids geneMat[rownames(nobs),] = nobs - geneMat[rownames(quantData$incompatibleCountMatrix),] = geneMat[rownames(quantData$incompatibleCountMatrix),] + quantData2$incompatibleCountMatrix + geneMat[rownames(quantData$incompatibleCountMatrix),] = geneMat[rownames(quantData$incompatibleCountMatrix),] + quantData$incompatibleCountMatrix return(geneMat) } \ No newline at end of file diff --git a/R/bambu.R b/R/bambu.R index 0a343288..fee6f82e 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -140,7 +140,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, assignDist = TRUE, quant = TRUE, stranded = FALSE, ncore = 1, yieldSize = NULL, trackReads = FALSE, returnDistTable = FALSE, lowMemory = FALSE, fusionMode = FALSE, verbose = FALSE, demultiplexed = FALSE, spatial = NULL, quantData = NULL, - sampleNames = NULL, cleanReads = TRUE, dedupUMI = FALSE) { + sampleNames = NULL, cleanReads = TRUE, dedupUMI = FALSE, clusters = NULL) { if(is.null(annotations)) { annotations = GRangesList() } else annotations <- checkInputs(annotations, reads, readClass.outputDir = rcOutDir, genomeSequence = genome, discovery = discovery, @@ -206,7 +206,9 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, quantData$geneCounts = geneCountsFromQuantData(quantData, annotations) x = quantData$readClassDt %>% filter(!multi_align & !is.na(eqClass.match)) quantData$uniqueCounts = quantData$countMatrix[x$eqClass.match,] - rownames(quantData$uniqueCounts) = names(annotations)[x$txid] + uniqueCounts.tx = sparse.model.matrix(~ factor(x$txid) - 1) + quantData$uniqueCounts = t(uniqueCounts.tx) %*% quantData$uniqueCounts + rownames(quantData$uniqueCounts) = names(annotations)[match(as.numeric(levels(factor(x$txid))),mcols(annotations)$txid)] if (!quant) return(quantData) } @@ -218,17 +220,39 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, if(is.null(quantData)) stop("quantData must be provided or assignDist = TRUE") GENEIDs.i = as.numeric(factor(unique(mcols(annotations)$GENEID))) start.ptm <- proc.time() - countsSeCompressed <- bplapply(seq_len(ncol(quantData$countMatrix)), FUN = function(i){ - #print(i) - return(bambu.quantify(readClassDt = quantData$readClassDt, countMatrix = unname(quantData$countMatrix[,i]), - incompatibleCountMatrix = data.table(GENEID.i = as.numeric(rownames(quantData$incompatibleCountMatrix)), counts = quantData$incompatibleCountMatrix[,i]), + + #load in the barcode clustering from file if provided + iter = seq_len(ncol(quantData$countMatrix)) + if(!is.null(clusters)){ + if(!is.list(clusters)){ + clusterMap = read.table(clusters, + sep = ifelse(grepl(".tsv$",clusters), "\t", ","), header = FALSE) + clusters = splitAsList(clusterMap[,1], clusterMap[,2]) + rm(clusterMap) + } + iter = clusters + } + + countsSeCompressed <- bplapply(iter, FUN = function(i){ + countMatrix = unname(quantData$countMatrix[,i]) + if(!is.null(dim(countMatrix))){ + countMatrix = rowSums(countMatrix) + incompatibleCountMatrix = rowSums(quantData$incompatibleCountMatrix[,i]) + } + return(bambu.quantify(readClassDt = quantData$readClassDt, countMatrix = countMatrix, + incompatibleCountMatrix = data.table(GENEID.i = as.numeric(rownames(quantData$incompatibleCountMatrix)), counts = incompatibleCountMatrix), txid.index = mcols(annotations)$txid, GENEIDs = GENEIDs.i, isoreParameters = isoreParameters, emParameters = emParameters, trackReads = trackReads, returnDistTable = returnDistTable, verbose = verbose))}, BPPARAM = bpParameters) end.ptm <- proc.time() message("Total Time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") - countsSeCompressed$colnames = colnames(quantData$countMatrix) + if(!is.null(clusters)){ + countsSeCompressed$colnames = names(clusters) + } else{ + countsSeCompressed$colnames = colnames(quantData$countMatrix) + } + countsSe <- combineCountSes(countsSeCompressed, annotations) #metadata(countsSe)$warnings = warnings @@ -238,12 +262,12 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, # if (returnDistTable) metadata(seOutput)$distTable = metadata(readClassDist)$distTable df = DataFrame(sampleName = colnames(countsSe)) - if(demultiplexed){ + if(demultiplexed & is.null(clusters)){ df = DataFrame(id = colnames(countsSe), sampleName = gsub("_[^_]+$","", colnames(countsSe), perl = TRUE), Barcode = gsub(".*_(?=[^_]*$)","", colnames(countsSe), perl = TRUE)) } - if(!is.null(spatial)){ + if(!is.null(spatial & is.null(clusters))){ df$x_coordinate = NA df$y_coordinate = NA #load in all whitelist info, is one file or a vector of paths? From 1f3994ad9a83ecb26b96fc8cebc35919acbc3009 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 27 Aug 2024 10:17:49 +0800 Subject: [PATCH 114/189] Fix bug in denono --- R/bambu-extendAnnotations-utilityExtend.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index e11237d6..df9ce393 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -111,7 +111,7 @@ filterTranscriptsByAnnotation <- function(rowDataCombined, annotationGrangesList exonRangesCombined <- exonRangesCombined[filterSet] rowDataCombined <- rowDataCombined[filterSet,] } - if(sum(filterSet==0) & length(annotationGrangesList)==0) stop( + if(sum(filterSet)==0 & length(annotationGrangesList)==0) stop( "WARNING - No annotations were provided. Please increase NDR threshold to use novel transcripts") if(sum(filterSet)==0) message("WARNING - No novel transcripts meet the given thresholds. Try a higher NDR.") # (3) combine novel transcripts with annotations From d795869da7ebbf68bad6ebf5fd297adf7ee914dd Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 27 Aug 2024 14:33:50 +0800 Subject: [PATCH 115/189] AssignDist step will now output uniqueCounts transcriptToGene will work on this se object --- R/bambu-quantify_utilityFunctions.R | 69 +++++++++++++-------- R/bambu.R | 96 ++++++++++++++--------------- R/bambu_utilityFunctions.R | 32 ++++++++++ R/transcriptToGeneExpression.R | 3 + 4 files changed, 123 insertions(+), 77 deletions(-) diff --git a/R/bambu-quantify_utilityFunctions.R b/R/bambu-quantify_utilityFunctions.R index 2b54aee5..d324ef5d 100644 --- a/R/bambu-quantify_utilityFunctions.R +++ b/R/bambu-quantify_utilityFunctions.R @@ -522,32 +522,49 @@ NULL library.dynam.unload("bambu", libpath) } -geneCountsFromQuantData <- function(quantData, annotations){ - x = quantData$readClassDt %>% group_by(eqClassId) %>% - summarise(nobs= nobs[1], - gene_sid = gene_sid[1], - eqClass.match = eqClass.match[1], - txid = txid[1]) %>% - filter(!is.na(eqClass.match)) - - #combine counts by gene - nobs = quantData$countMatrix[x$eqClass.match,] - nobs.gene = sparse.model.matrix(~ factor(x$gene_sid) - 1) - nobs = t(nobs.gene) %*% nobs - - #convert the relative gene index to the consistant gene id - rownames(nobs) = gsub("factor\\(x\\$gene_sid\\)", "", rownames(nobs)) - rownames(nobs) = x$txid[match(rownames(nobs), x$gene_sid)] - rownames(nobs) = mcols(annotations)$GENEID[as.numeric(rownames(nobs))] - genes = levels(factor(unique(mcols(annotations)$GENEID))) - rownames(quantData$incompatibleCountMatrix) = genes[as.numeric(rownames(quantData$incompatibleCountMatrix))] +generateUniqueCounts <- function(readClassDt, countMatrix, annotations){ + x = readClassDt %>% filter(!multi_align & !is.na(eqClass.match)) + uniqueCounts = countMatrix[x$eqClass.match,] + uniqueCounts.tx = sparse.model.matrix(~ factor(x$txid) - 1) + uniqueCounts = t(uniqueCounts.tx) %*% uniqueCounts + rownames(uniqueCounts) = names(annotations)[match(as.numeric(levels(factor(x$txid))),mcols(annotations)$txid)] + counts = sparseMatrix(length(annotations), ncol(uniqueCounts), x = 0) + rownames(counts) = names(annotations) + counts[rownames(uniqueCounts),] = uniqueCounts + return(counts) + + counts.total = colSums(countMatrix) + colSums(incompatibleCountMatrix) + counts.total[counts.total==0] = 1 + counts.CPM = counts/counts.total * 10^6 - #combine the read class gene counts with incompatible counts - geneids = union(rownames(nobs), rownames(quantData$incompatibleCountMatrix)) - geneMat = sparseMatrix(length(geneids), ncol(nobs), x = 0) - rownames(geneMat) = geneids - geneMat[rownames(nobs),] = nobs - geneMat[rownames(quantData$incompatibleCountMatrix),] = geneMat[rownames(quantData$incompatibleCountMatrix),] + quantData$incompatibleCountMatrix +} +generateIncompatibleCounts <- function(incompatibleCountMatrix, annotations){ + genes = levels(factor(unique(mcols(annotations)$GENEID))) + rownames(incompatibleCountMatrix) = genes[as.numeric(rownames(incompatibleCountMatrix))] + geneMat = sparseMatrix(length(genes), ncol(incompatibleCountMatrix), x = 0) + rownames(geneMat) = genes + geneMat[rownames(incompatibleCountMatrix),] = incompatibleCountMatrix return(geneMat) -} \ No newline at end of file +} + +generateNonUniqueCounts <- function(readClassDt, countMatrix, annotations){ + #fuse multi align RCs by gene + x = readClassDt %>% filter(multi_align & !is.na(eqClass.match)) + x = x %>% distinct(eqClassId, .keep_all = TRUE) + nonuniqueCounts = countMatrix[x$eqClass.match,] + nonuniqueCounts.gene = sparse.model.matrix(~ factor(x$gene_sid) - 1) + nonuniqueCounts = t(nonuniqueCounts.gene) %*% nonuniqueCounts + #covert ids into gene ids + geneids = as.numeric(levels(factor(x$gene_sid))) + geneids = x$txid[match(geneids, x$gene_sid)] + geneids = mcols(annotations)$GENEID[as.numeric(geneids)] + rownames(nonuniqueCounts) = geneids + #create matrix for all annotated genes + genes = levels(factor(unique(mcols(annotations)$GENEID))) + geneMat = sparseMatrix(length(genes), ncol(nonuniqueCounts), x = 0) + rownames(geneMat) = genes + geneMat[rownames(nonuniqueCounts),] = nonuniqueCounts + return(geneMat) +} + diff --git a/R/bambu.R b/R/bambu.R index fee6f82e..905e7917 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -187,34 +187,53 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, } if(assignDist){ - message("--- Start calculate equivilance classes ---") + message("--- Start calculating equivilance classes ---") if (is.character(readClassList)) readClassList <- readRDS(file = readClassList) if(is.list(readClassList)) readClassList = readClassList[[1]] metadata(readClassList)$readClassDist <- calculateDistTable(readClassList, annotations, isoreParameters, verbose) readClassList = splitReadClassFiles(readClassList) - quantData = list() - quantData$readClassDt <- genEquiRCs(metadata(readClassList)$readClassDist, annotations, verbose) - quantData$countMatrix = metadata(readClassList)$countMatrix - quantData$incompatibleCountMatrix = metadata(readClassList)$incompatibleCountMatrix - quantData$readClassDt$eqClass.match = match(quantData$readClassDt$eqClassById,metadata(readClassList)$eqClassById) - quantData$readClassDt <- simplifyNames(quantData$readClassDt) - quantData$readClassDt = quantData$readClassDt %>% group_by(eqClassId, gene_sid) %>% + readClassDt <- genEquiRCs(metadata(readClassList)$readClassDist, annotations, verbose) + readClassDt$eqClass.match = match(readClassDt$eqClassById,metadata(readClassList)$eqClassById) + readClassDt <- simplifyNames(readClassDt) + readClassDt = readClassDt %>% group_by(eqClassId, gene_sid) %>% mutate(multi_align = length(unique(txid))>1) %>% ungroup() %>% mutate(aval = 1) %>% data.table() #return non-em counts - quantData$geneCounts = geneCountsFromQuantData(quantData, annotations) - x = quantData$readClassDt %>% filter(!multi_align & !is.na(eqClass.match)) - quantData$uniqueCounts = quantData$countMatrix[x$eqClass.match,] - uniqueCounts.tx = sparse.model.matrix(~ factor(x$txid) - 1) - quantData$uniqueCounts = t(uniqueCounts.tx) %*% quantData$uniqueCounts - rownames(quantData$uniqueCounts) = names(annotations)[match(as.numeric(levels(factor(x$txid))),mcols(annotations)$txid)] - + ColData = generateColData(colnames(metadata(readClassList)$countMatrix), clusters, demultiplexed, spatial) + #code to generate genecounts from quantData + if(FALSE){ + quantData$geneCounts = geneCountsFromQuantData(quantData, annotations) + counts <- quantData$geneCounts + counts.total = colSums(counts) + counts.total[counts.total==0] = 1 + counts.CPM = counts/counts.total * 10^6 + exByGene <- reducedRangesByGenes(annotations) + RowNames <- rownames(quantData$geneCounts) + geneSe <- SummarizedExperiment( + assays = SimpleList(counts = counts, + CPM = counts.CPM), + rowRanges = exByGene[RowNames], + colData = ColData) + colnames(geneSe) = colnames(quantData$countMatrix) + } + quantData <- SummarizedExperiment(assays = SimpleList( + counts = generateUniqueCounts(readClassDt, metadata(readClassList)$countMatrix, annotations)), + rowRanges = annotations, + colData = ColData) + colnames(quantData) = ColData$id + metadata(quantData)$incompatibleCounts = generateIncompatibleCounts(metadata(readClassList)$incompatibleCountMatrix, annotations) + metadata(quantData)$nonuniqueCounts = generateNonUniqueCounts(readClassDt, metadata(readClassList)$countMatrix, annotations) + metadata(quantData)$readClassDt = readClassDt + metadata(quantData)$countMatrix = metadata(readClassList)$countMatrix + metadata(quantData)$incompatibleCountMatrix = metadata(readClassList)$incompatibleCountMatrix + if (!quant) return(quantData) + } if (quant) { - message("--- Start isoform quantification ---") + message("--- Start isoform EM quantification ---") if(length(annotations)==0) stop("No valid annotations, if running de novo please try less stringent parameters") if(is.null(quantData)) stop("quantData must be provided or assignDist = TRUE") @@ -222,7 +241,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, start.ptm <- proc.time() #load in the barcode clustering from file if provided - iter = seq_len(ncol(quantData$countMatrix)) + iter = seq_len(ncol(metadata(quantData)$countMatrix)) if(!is.null(clusters)){ if(!is.list(clusters)){ clusterMap = read.table(clusters, @@ -234,13 +253,14 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, } countsSeCompressed <- bplapply(iter, FUN = function(i){ - countMatrix = unname(quantData$countMatrix[,i]) + countMatrix = unname(metadata(quantData)$countMatrix[,i]) + incompatibleCountMatrix = unname(metadata(quantData)$incompatibleCountMatrix[,i]) if(!is.null(dim(countMatrix))){ countMatrix = rowSums(countMatrix) - incompatibleCountMatrix = rowSums(quantData$incompatibleCountMatrix[,i]) + incompatibleCountMatrix = rowSums(metadata(quantData)$incompatibleCountMatrix[,i]) } - return(bambu.quantify(readClassDt = quantData$readClassDt, countMatrix = countMatrix, - incompatibleCountMatrix = data.table(GENEID.i = as.numeric(rownames(quantData$incompatibleCountMatrix)), counts = incompatibleCountMatrix), + return(bambu.quantify(readClassDt = metadata(quantData)$readClassDt, countMatrix = countMatrix, + incompatibleCountMatrix = data.table(GENEID.i = as.numeric(rownames(metadata(quantData)$incompatibleCountMatrix)), counts = incompatibleCountMatrix), txid.index = mcols(annotations)$txid, GENEIDs = GENEIDs.i, isoreParameters = isoreParameters, emParameters = emParameters, trackReads = trackReads, returnDistTable = returnDistTable, verbose = verbose))}, @@ -250,7 +270,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, if(!is.null(clusters)){ countsSeCompressed$colnames = names(clusters) } else{ - countsSeCompressed$colnames = colnames(quantData$countMatrix) + countsSeCompressed$colnames = colnames(quantData) } countsSe <- combineCountSes(countsSeCompressed, annotations) @@ -261,35 +281,9 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, # annotations) # if (returnDistTable) metadata(seOutput)$distTable = metadata(readClassDist)$distTable - df = DataFrame(sampleName = colnames(countsSe)) - if(demultiplexed & is.null(clusters)){ - df = DataFrame(id = colnames(countsSe), - sampleName = gsub("_[^_]+$","", colnames(countsSe), perl = TRUE), - Barcode = gsub(".*_(?=[^_]*$)","", colnames(countsSe), perl = TRUE)) - } - if(!is.null(spatial & is.null(clusters))){ - df$x_coordinate = NA - df$y_coordinate = NA - #load in all whitelist info, is one file or a vector of paths? - if(length(spatial)==1){ - bc_coords = DataFrame(read.table(gzfile(spatial), col.names = c("Barcode", "x_coordinate", "y_coordinate"))) - bcMatch = match(df$Barcode, bc_coords$Barcode) - df$x_coordinate = bc_coords$x_coordinate[bcMatch] - df$y_coordinate = bc_coords$y_coordinate[bcMatch] - } else{ - spatial.unique = unique(spatial) - for(whitelist in spatial.unique){ - i = which(spatial.unique==whitelist) - bc_coords = DataFrame(read.table(gzfile(whitelist), col.names = c("Barcode", "x_coordinate", "y_coordinate"))) - bcSampleIndex = df$sampleName %in% sampleNames[i] - bcMatch = match(df$Barcode[bcSampleIndex], bc_coords$Barcode) - df$x_coordinate[bcSampleIndex] = bc_coords$x_coordinate[bcMatch] - df$y_coordinate[bcSampleIndex] = bc_coords$y_coordinate[bcMatch] - } - } - } - colData(countsSe) = df - colnames(countsSe) = df[,1] + ColData = generateColData(colnames(countsSe), clusters, demultiplexed, spatial) + colData(countsSe) = ColData + colnames(countsSe) = ColData[,1] return(countsSe) } } diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index b7910293..e495126a 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -271,6 +271,38 @@ combineCountSes <- function(countsSe, annotations){ return(countsSe) } +#' Generate the coldata for se options using colnames, and other option inputs +#' @noRd +generateColData <- function(sampleNames, clusters, demultiplexed, spatial){ + ColData = DataFrame(sampleName = sampleNames) + if(demultiplexed & is.null(clusters)){ + ColData = DataFrame(id = sampleNames, + sampleName = gsub("_[^_]+$","", sampleNames, perl = TRUE), + Barcode = gsub(".*_(?=[^_]*$)","", sampleNames, perl = TRUE)) + } + if(!is.null(spatial) & is.null(clusters)){ + ColData$x_coordinate = NA + ColData$y_coordinate = NA + if(length(spatial)==1){ + bc_coords = DataFrame(read.table(gzfile(spatial), col.names = c("Barcode", "x_coordinate", "y_coordinate"))) + bcMatch = match(ColData$Barcode, bc_coords$Barcode) + ColData$x_coordinate = bc_coords$x_coordinate[bcMatch] + ColData$y_coordinate = bc_coords$y_coordinate[bcMatch] + } else{ + spatial.unique = unique(spatial) + for(whitelist in spatial.unique){ + i = which(spatial.unique==whitelist) + bc_coords = DataFrame(read.table(gzfile(whitelist), col.names = c("Barcode", "x_coordinate", "y_coordinate"))) + bcSampleIndex = ColData$sampleName %in% sampleNames[i] + bcMatch = match(ColData$Barcode[bcSampleIndex], bc_coords$Barcode) + ColData$x_coordinate[bcSampleIndex] = bc_coords$x_coordinate[bcMatch] + ColData$y_coordinate[bcSampleIndex] = bc_coords$y_coordinate[bcMatch] + } + } + } + return(ColData) +} + # Quick wrapper function (https://stackoverflow.com/questions/13273833/merging-multiple-data-tables) #' @noRd merge_wrapper <- function(x,y){ diff --git a/R/transcriptToGeneExpression.R b/R/transcriptToGeneExpression.R index f517633a..83507853 100644 --- a/R/transcriptToGeneExpression.R +++ b/R/transcriptToGeneExpression.R @@ -17,6 +17,9 @@ transcriptToGeneExpression <- function(se) { counts = fac2sparse(rowData(se)$GENEID) %*% counts incompatibleCounts <- metadata(se)$incompatibleCounts + if("nonuniqueCounts" %in% names(metadata(se))){ + incompatibleCounts = incompatibleCounts + metadata(se)$nonuniqueCounts + } incompatibleCounts = incompatibleCounts[match(rownames(counts), rownames(incompatibleCounts)),] counts = counts + incompatibleCounts counts.total = colSums(counts) From efe30f6b2de0d371d03de50c422205bbcb993919 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 27 Aug 2024 14:34:30 +0800 Subject: [PATCH 116/189] Remove old gene count code --- R/bambu.R | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 905e7917..1826a208 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -201,22 +201,6 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, #return non-em counts ColData = generateColData(colnames(metadata(readClassList)$countMatrix), clusters, demultiplexed, spatial) - #code to generate genecounts from quantData - if(FALSE){ - quantData$geneCounts = geneCountsFromQuantData(quantData, annotations) - counts <- quantData$geneCounts - counts.total = colSums(counts) - counts.total[counts.total==0] = 1 - counts.CPM = counts/counts.total * 10^6 - exByGene <- reducedRangesByGenes(annotations) - RowNames <- rownames(quantData$geneCounts) - geneSe <- SummarizedExperiment( - assays = SimpleList(counts = counts, - CPM = counts.CPM), - rowRanges = exByGene[RowNames], - colData = ColData) - colnames(geneSe) = colnames(quantData$countMatrix) - } quantData <- SummarizedExperiment(assays = SimpleList( counts = generateUniqueCounts(readClassDt, metadata(readClassList)$countMatrix, annotations)), rowRanges = annotations, From d43b253ace4e19fd088ccac08375bd823786bc31 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 2 Sep 2024 10:02:18 +0800 Subject: [PATCH 117/189] Update low memory to process read classes together or seperately This makes lowmemory readclassconstruction base line --- R/bambu-assignDist.R | 77 +++++++++++ R/bambu-processReads.R | 199 ++++++++++++++++++++-------- R/bambu-quantify_utilityFunctions.R | 46 ------- R/bambu.R | 101 ++++++-------- R/prepareDataFromBam.R | 2 - 5 files changed, 264 insertions(+), 161 deletions(-) create mode 100644 R/bambu-assignDist.R diff --git a/R/bambu-assignDist.R b/R/bambu-assignDist.R new file mode 100644 index 00000000..88e74eca --- /dev/null +++ b/R/bambu-assignDist.R @@ -0,0 +1,77 @@ +#' Create equivilence classes and assign to transcripts +#' @inheritParams bambu +#' @import data.table +#' @noRd +assignReadClasstoTranscripts <- function(readClassList, annotations, isoreParameters, verbose, clusters, demultiplexed, spatial) { + metadata(readClassList)$readClassDist <- calculateDistTable(readClassList, annotations, isoreParameters, verbose) + readClassList = splitReadClassFiles(readClassList) + readClassDt <- genEquiRCs(metadata(readClassList)$readClassDist, annotations, verbose) + readClassDt$eqClass.match = match(readClassDt$eqClassById,metadata(readClassList)$eqClassById) + readClassDt <- simplifyNames(readClassDt) + readClassDt = readClassDt %>% group_by(eqClassId, gene_sid) %>% + mutate(multi_align = length(unique(txid))>1) %>% ungroup() %>% mutate(aval = 1) %>% + data.table() + + #return non-em counts + ColData = generateColData(colnames(metadata(readClassList)$countMatrix), clusters, demultiplexed, spatial) + quantData <- SummarizedExperiment(assays = SimpleList( + counts = generateUniqueCounts(readClassDt, metadata(readClassList)$countMatrix, annotations)), + rowRanges = annotations, + colData = ColData) + colnames(quantData) = ColData$id + metadata(quantData)$incompatibleCounts = generateIncompatibleCounts(metadata(readClassList)$incompatibleCountMatrix, annotations) + metadata(quantData)$nonuniqueCounts = generateNonUniqueCounts(readClassDt, metadata(readClassList)$countMatrix, annotations) + metadata(quantData)$readClassDt = readClassDt + metadata(quantData)$countMatrix = metadata(readClassList)$countMatrix + metadata(quantData)$incompatibleCountMatrix = metadata(readClassList)$incompatibleCountMatrix + + return(quantData) + +} + + +generateUniqueCounts <- function(readClassDt, countMatrix, annotations){ + x = readClassDt %>% filter(!multi_align & !is.na(eqClass.match)) + uniqueCounts = countMatrix[x$eqClass.match,] + uniqueCounts.tx = sparse.model.matrix(~ factor(x$txid) - 1) + uniqueCounts = t(uniqueCounts.tx) %*% uniqueCounts + rownames(uniqueCounts) = names(annotations)[match(as.numeric(levels(factor(x$txid))),mcols(annotations)$txid)] + counts = sparseMatrix(length(annotations), ncol(uniqueCounts), x = 0) + rownames(counts) = names(annotations) + counts[rownames(uniqueCounts),] = uniqueCounts + return(counts) + + counts.total = colSums(countMatrix) + colSums(incompatibleCountMatrix) + counts.total[counts.total==0] = 1 + counts.CPM = counts/counts.total * 10^6 + +} + +generateIncompatibleCounts <- function(incompatibleCountMatrix, annotations){ + genes = levels(factor(unique(mcols(annotations)$GENEID))) + rownames(incompatibleCountMatrix) = genes[as.numeric(rownames(incompatibleCountMatrix))] + geneMat = sparseMatrix(length(genes), ncol(incompatibleCountMatrix), x = 0) + rownames(geneMat) = genes + geneMat[rownames(incompatibleCountMatrix),] = incompatibleCountMatrix + return(geneMat) +} + +generateNonUniqueCounts <- function(readClassDt, countMatrix, annotations){ + #fuse multi align RCs by gene + x = readClassDt %>% filter(multi_align & !is.na(eqClass.match)) + x = x %>% distinct(eqClassId, .keep_all = TRUE) + nonuniqueCounts = countMatrix[x$eqClass.match,] + nonuniqueCounts.gene = sparse.model.matrix(~ factor(x$gene_sid) - 1) + nonuniqueCounts = t(nonuniqueCounts.gene) %*% nonuniqueCounts + #covert ids into gene ids + geneids = as.numeric(levels(factor(x$gene_sid))) + geneids = x$txid[match(geneids, x$gene_sid)] + geneids = mcols(annotations)$GENEID[as.numeric(geneids)] + rownames(nonuniqueCounts) = geneids + #create matrix for all annotated genes + genes = levels(factor(unique(mcols(annotations)$GENEID))) + geneMat = sparseMatrix(length(genes), ncol(nonuniqueCounts), x = 0) + rownames(geneMat) = genes + geneMat[rownames(nonuniqueCounts),] = nonuniqueCounts + return(geneMat) +} diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 1da9ec9c..3d94b875 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -53,39 +53,55 @@ bambu.processReads <- function(reads, annotations, genomeSequence, defaultModels = isoreParameters[["defaultModels"]] returnModel = isoreParameters[["returnModel"]] min.exonOverlap = isoreParameters[["min.exonOverlap"]] + + if(lowMemory){ + readClassList <- bplapply(seq_along(reads), function(i) { + bambu.processReadsByFile(bam.file = reads[i], + genomeSequence = genomeSequence,annotations = annotations, + readClass.outputDir = readClass.outputDir, + stranded = stranded, min.readCount = min.readCount, + fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, + defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, + trackReads = trackReads, fusionMode = fusionMode, + demultiplexed = demultiplexed, cleanReads = cleanReads, dedupUMI = dedupUMI, index = i)}, + BPPARAM = bpParameters) + } else { + readGrgList <- bplapply(seq_along(reads), function(i) { + bambu.readsByFile(bam.file = reads[i], + genomeSequence = genomeSequence,annotations = annotations, + readClass.outputDir = readClass.outputDir, + stranded = stranded, min.readCount = min.readCount, + fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, + defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, + trackReads = trackReads, fusionMode = fusionMode, + demultiplexed = demultiplexed, cleanReads = cleanReads, dedupUMI = dedupUMI, index = i)}, + BPPARAM = bpParameters) - readGrgList <- bplapply(seq_along(reads), function(i) { - bambu.processReadsByFile(bam.file = reads[i], - genomeSequence = genomeSequence,annotations = annotations, - readClass.outputDir = readClass.outputDir, - stranded = stranded, min.readCount = min.readCount, - fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, - defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, - lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode, - demultiplexed = demultiplexed, cleanReads = cleanReads, dedupUMI = dedupUMI, index = i)}, - BPPARAM = bpParameters) - - sampleNames = as.numeric(as.factor(sampleNames)) - for(i in seq_along(readGrgList)){ - if(!isFALSE(demultiplexed)){ - mcols(readGrgList[[i]])$BC = paste0(names(reads)[i], '_', mcols(readGrgList[[i]])$BC) - } else{mcols(readGrgList[[i]])$BC = sampleNames[i]} - mcols(readGrgList[[i]])$BC = as.factor(mcols(readGrgList[[i]])$BC) - } - readGrgList = do.call(c, readGrgList) - mcols(readGrgList)$id <- seq_along(readGrgList) - if(!isFALSE(demultiplexed)){ - mcols(readGrgList)$sampleID = as.numeric(mcols(readGrgList)$BC) - } else {mcols(readGrgList)$sampleID = mcols(readGrgList)$BC} - readClassList <- constructReadClasses(readGrgList, genomeSequence = genomeSequence,annotations = annotations, - readClass.outputDir = readClass.outputDir, - stranded = stranded, min.readCount = min.readCount, - fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, - defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, - lowMemory = lowMemory, trackReads = trackReads, fusionMode = fusionMode) + sampleNames = as.numeric(as.factor(sampleNames)) + for(i in seq_along(readGrgList)){ + if(!isFALSE(demultiplexed)){ + mcols(readGrgList[[i]])$BC = paste0(names(reads)[i], '_', mcols(readGrgList[[i]])$BC) + } else{mcols(readGrgList[[i]])$BC = sampleNames[i]} + mcols(readGrgList[[i]])$BC = as.factor(mcols(readGrgList[[i]])$BC) + } + readGrgList = do.call(c, readGrgList) + mcols(readGrgList)$id <- seq_along(readGrgList) + if(!isFALSE(demultiplexed)){ + mcols(readGrgList)$sampleID = as.numeric(mcols(readGrgList)$BC) + } else {mcols(readGrgList)$sampleID = mcols(readGrgList)$BC} + readClassList <- constructReadClasses(readGrgList, genomeSequence = genomeSequence,annotations = annotations, + readClass.outputDir = readClass.outputDir, + stranded = stranded, min.readCount = min.readCount, + fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, + defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, + trackReads = trackReads, fusionMode = fusionMode) - metadata(readClassList)$samples = names(reads) - if(!isFALSE(demultiplexed))metadata(readClassList)$samples = levels(mcols(readGrgList)$BC) + metadata(readClassList)$samples = names(reads) + if(!isFALSE(demultiplexed))metadata(readClassList)$samples = levels(mcols(readGrgList)$BC) + readClassList = list(readClassList) + } + + # TODO return output # if (!is.null(readClass.outputDir)) { @@ -103,7 +119,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, # se <- readClassFile # } #TODO don't output list, current there because discovery needs it - return(list(readClassList)) + return(readClassList) } #' Preprocess bam files and save read class files @@ -113,10 +129,100 @@ bambu.processReads <- function(reads, annotations, genomeSequence, bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, readClass.outputDir = NULL, yieldSize = NULL, stranded = FALSE, min.readCount = 2, fitReadClassModel = TRUE, min.exonOverlap = 10, defaultModels = NULL, returnModel = FALSE, - verbose = FALSE, lowMemory = FALSE, trackReads = FALSE, fusionMode = FALSE, demultiplexed = FALSE, + verbose = FALSE, trackReads = FALSE, fusionMode = FALSE, demultiplexed = FALSE, + cleanReads = TRUE, dedupUMI = FALSE, index = 0) { + if(verbose) message(names(bam.file)[1]) + readGrgList <- prepareDataFromBam(bam.file[[1]], verbose = verbose, yieldSize = yieldSize, use.names = trackReads, demultiplexed = demultiplexed, cleanReads = cleanReads, dedupUMI = dedupUMI) + if(verbose) message(paste0("Number of alignments/reads: ",length(readGrgList))) + warnings = c() + warnings = seqlevelCheckReadsAnnotation(readGrgList, annotations) + if(verbose & length(warnings) > 0) warning(paste(warnings,collapse = "\n")) + #check seqlevels for consistency, drop ranges not present in genomeSequence + refSeqLevels <- seqlevels(genomeSequence) + if (!all(seqlevels(readGrgList) %in% refSeqLevels)) { + refSeqLevels <- intersect(refSeqLevels, seqlevels(readGrgList)) + if (!all(seqlevels(annotations) %in% refSeqLevels)&(!(length(annotations)==0))) { + refSeqLevels <- intersect(refSeqLevels, seqlevels(annotations)) + warningText = paste0("not all chromosomes from annotations present in ", + "reference genome sequence, annotations without reference genomic sequence ", + "are dropped") + warnings = c(warnings, warningText) + if(verbose) warning(warningText) + annotations <- keepSeqlevels(annotations, value = refSeqLevels, + pruning.mode = "coarse") + } + warningText = paste0("not all chromosomes from reads present in reference ", + "genome sequence, reads without reference chromosome sequence are dropped") + warnings = c(warnings, warningText) + if(verbose) warning(warningText) + readGrgList <- keepSeqlevels(readGrgList, value = refSeqLevels, + pruning.mode = "coarse") + # reassign Ids after seqlevels are dropped + mcols(readGrgList)$id <- seq_along(readGrgList) + } + #removes reads that are outside genome coordinates + badReads = which(max(end(ranges(readGrgList)))>= + seqlengths(genomeSequence)[as.character(getChrFromGrList(readGrgList))]) + if(length(badReads) > 0 ){ + readGrgList = readGrgList[-badReads] + warningText = paste0(length(badReads), " reads are mapped outside the provided ", + "genomic regions. These reads will be dropped. Check you are using the ", + "same genome used for the alignment") + warnings = c(warnings, warningText) + if(verbose) warning(warningText) + } + if(length(readGrgList) == 0) { + stop("No reads left after filtering.") + } + mcols(readGrgList)$id <- seq_along(readGrgList) + + sampleName = names(bam.file)[1] + if(!isFALSE(demultiplexed)){ + mcols(readGrgList)$BC = paste0(sampleName, '_', mcols(readGrgList)$BC) + } else{mcols(readGrgList)$BC = sampleName} + mcols(readGrgList)$BC = as.factor(mcols(readGrgList)$BC) + if(!isFALSE(demultiplexed)){ + mcols(readGrgList)$sampleID = as.numeric(mcols(readGrgList)$BC) + } else {mcols(readGrgList)$sampleID = mcols(readGrgList)$BC} + + # construct read classes for each chromosome seperately + se <- lowMemoryConstructReadClasses(readGrgList, genomeSequence, + annotations, stranded, verbose,bam.file) + + + metadata(se)$warnings = warnings + if(trackReads){ + metadata(se)$readNames = names(readGrgList) + metadata(se)$readId = mcols(readGrgList)$id + } + refSeqLevels <- seqlevels(genomeSequence) + GenomeInfoDb::seqlevels(se) <- refSeqLevels + # create SE object with reconstructed readClasses + se <- scoreReadClasses(se, genomeSequence, annotations, + defaultModels = defaultModels, + fit = fitReadClassModel, + returnModel = returnModel, + min.readCount = min.readCount, + min.exonOverlap = min.exonOverlap, + fusionMode = fusionMode, + verbose = verbose) + + metadata(se)$samples = names(bam.file)[1] + if(!isFALSE(demultiplexed))metadata(se)$samples = levels(mcols(readGrgList)$BC) + return(se) +} + +#' Preprocess bam files and save read class files +#' @inheritParams bambu +#' @importFrom GenomeInfoDb seqlevels seqlevels<- keepSeqlevels +#' @noRd +bambu.readsByFile <- function(bam.file, genomeSequence, annotations, + readClass.outputDir = NULL, yieldSize = NULL, stranded = FALSE, min.readCount = 2, + fitReadClassModel = TRUE, min.exonOverlap = 10, defaultModels = NULL, returnModel = FALSE, + verbose = FALSE, trackReads = FALSE, fusionMode = FALSE, demultiplexed = FALSE, cleanReads = TRUE, dedupUMI = FALSE, index = 0) { readGrgList <- prepareDataFromBam(bam.file[[1]], verbose = verbose, yieldSize = yieldSize, use.names = trackReads, demultiplexed = demultiplexed, cleanReads = cleanReads, dedupUMI = dedupUMI) - print(paste0("Number of alignments/reads: ",length(readGrgList))) + if(verbose) message("Number of alignments/reads: ",length(readGrgList))) warnings = c() warnings = seqlevelCheckReadsAnnotation(readGrgList, annotations) if(verbose & length(warnings) > 0) {warning(paste(warnings,collapse = "\n"))} @@ -159,7 +265,7 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, # reassign Ids after seqlevels are dropped mcols(readGrgList)$id <- seq_along(readGrgList) ### add ### - print(paste0("Number of post-filter alignments/reads: ",length(readGrgList))) + if(verbose) message("Number of post-filter alignments/reads: ",length(readGrgList))) if(length(readGrgList) == 0) { stop("No reads left after filtering.") } @@ -183,28 +289,11 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, constructReadClasses <- function(readGrgList, genomeSequence, annotations, readClass.outputDir = NULL, stranded = FALSE, min.readCount = 2, fitReadClassModel = TRUE, min.exonOverlap = 10, defaultModels = NULL, returnModel = FALSE, - verbose = FALSE, lowMemory = FALSE, trackReads = FALSE, fusionMode = FALSE){ + verbose = FALSE, trackReads = FALSE, fusionMode = FALSE){ warnings = c() ###TODO # construct read classes for each chromosome seperately - if(lowMemory) {se <- lowMemoryConstructReadClasses(readGrgList, genomeSequence, - annotations, stranded, verbose,"TODO") - } else { - unlisted_junctions <- unlistIntrons(readGrgList, use.ids = TRUE) - if(length(unlisted_junctions)==0){ - warningText = paste0("No aligned spliced reads detected!", - "Bambu expects spliced reads. If this is intended, ", - "see Documentation on how to handle single-exon ", - "transcripts") - warnings = c(warnings, warningText) - if (verbose) warning(warningText) - } - uniqueJunctions <- isore.constructJunctionTables(unlisted_junctions, - annotations,genomeSequence, stranded = stranded, verbose = verbose) - # create SE object with reconstructed readClasses - se <- isore.constructReadClasses(readGrgList, unlisted_junctions, - uniqueJunctions, runName = "TODO", - annotations, stranded, verbose) - } + se <- lowMemoryConstructReadClasses(readGrgList, genomeSequence, + annotations, stranded, verbose,"TODO") metadata(se)$warnings = warnings if(trackReads){ diff --git a/R/bambu-quantify_utilityFunctions.R b/R/bambu-quantify_utilityFunctions.R index d324ef5d..0751e4ae 100644 --- a/R/bambu-quantify_utilityFunctions.R +++ b/R/bambu-quantify_utilityFunctions.R @@ -522,49 +522,3 @@ NULL library.dynam.unload("bambu", libpath) } -generateUniqueCounts <- function(readClassDt, countMatrix, annotations){ - x = readClassDt %>% filter(!multi_align & !is.na(eqClass.match)) - uniqueCounts = countMatrix[x$eqClass.match,] - uniqueCounts.tx = sparse.model.matrix(~ factor(x$txid) - 1) - uniqueCounts = t(uniqueCounts.tx) %*% uniqueCounts - rownames(uniqueCounts) = names(annotations)[match(as.numeric(levels(factor(x$txid))),mcols(annotations)$txid)] - counts = sparseMatrix(length(annotations), ncol(uniqueCounts), x = 0) - rownames(counts) = names(annotations) - counts[rownames(uniqueCounts),] = uniqueCounts - return(counts) - - counts.total = colSums(countMatrix) + colSums(incompatibleCountMatrix) - counts.total[counts.total==0] = 1 - counts.CPM = counts/counts.total * 10^6 - -} - -generateIncompatibleCounts <- function(incompatibleCountMatrix, annotations){ - genes = levels(factor(unique(mcols(annotations)$GENEID))) - rownames(incompatibleCountMatrix) = genes[as.numeric(rownames(incompatibleCountMatrix))] - geneMat = sparseMatrix(length(genes), ncol(incompatibleCountMatrix), x = 0) - rownames(geneMat) = genes - geneMat[rownames(incompatibleCountMatrix),] = incompatibleCountMatrix - return(geneMat) -} - -generateNonUniqueCounts <- function(readClassDt, countMatrix, annotations){ - #fuse multi align RCs by gene - x = readClassDt %>% filter(multi_align & !is.na(eqClass.match)) - x = x %>% distinct(eqClassId, .keep_all = TRUE) - nonuniqueCounts = countMatrix[x$eqClass.match,] - nonuniqueCounts.gene = sparse.model.matrix(~ factor(x$gene_sid) - 1) - nonuniqueCounts = t(nonuniqueCounts.gene) %*% nonuniqueCounts - #covert ids into gene ids - geneids = as.numeric(levels(factor(x$gene_sid))) - geneids = x$txid[match(geneids, x$gene_sid)] - geneids = mcols(annotations)$GENEID[as.numeric(geneids)] - rownames(nonuniqueCounts) = geneids - #create matrix for all annotated genes - genes = levels(factor(unique(mcols(annotations)$GENEID))) - geneMat = sparseMatrix(length(genes), ncol(nonuniqueCounts), x = 0) - rownames(geneMat) = genes - geneMat[rownames(nonuniqueCounts),] = nonuniqueCounts - return(geneMat) -} - diff --git a/R/bambu.R b/R/bambu.R index 1826a208..7e0d0c72 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -189,82 +189,67 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, if(assignDist){ message("--- Start calculating equivilance classes ---") if (is.character(readClassList)) readClassList <- readRDS(file = readClassList) - if(is.list(readClassList)) readClassList = readClassList[[1]] - metadata(readClassList)$readClassDist <- calculateDistTable(readClassList, annotations, isoreParameters, verbose) - readClassList = splitReadClassFiles(readClassList) - readClassDt <- genEquiRCs(metadata(readClassList)$readClassDist, annotations, verbose) - readClassDt$eqClass.match = match(readClassDt$eqClassById,metadata(readClassList)$eqClassById) - readClassDt <- simplifyNames(readClassDt) - readClassDt = readClassDt %>% group_by(eqClassId, gene_sid) %>% - mutate(multi_align = length(unique(txid))>1) %>% ungroup() %>% mutate(aval = 1) %>% - data.table() - - #return non-em counts - ColData = generateColData(colnames(metadata(readClassList)$countMatrix), clusters, demultiplexed, spatial) - quantData <- SummarizedExperiment(assays = SimpleList( - counts = generateUniqueCounts(readClassDt, metadata(readClassList)$countMatrix, annotations)), - rowRanges = annotations, - colData = ColData) - colnames(quantData) = ColData$id - metadata(quantData)$incompatibleCounts = generateIncompatibleCounts(metadata(readClassList)$incompatibleCountMatrix, annotations) - metadata(quantData)$nonuniqueCounts = generateNonUniqueCounts(readClassDt, metadata(readClassList)$countMatrix, annotations) - metadata(quantData)$readClassDt = readClassDt - metadata(quantData)$countMatrix = metadata(readClassList)$countMatrix - metadata(quantData)$incompatibleCountMatrix = metadata(readClassList)$incompatibleCountMatrix - - if (!quant) return(quantData) - + #if(is.list(readClassList)) readClassList = readClassList[[1]] + quantDatas = bplapply(readClassList, FUN = assignReadClasstoTranscripts, + annotations = annotations, isoreParameters = isoreParameters, verbose = verbose, + clusters = clusters, demultiplexed = demultiplexed, spatial = spatial, + BPPARAM = bpParameters) + if (!quant) return(quantDatas) } if (quant) { message("--- Start isoform EM quantification ---") if(length(annotations)==0) stop("No valid annotations, if running de novo please try less stringent parameters") - if(is.null(quantData)) stop("quantData must be provided or assignDist = TRUE") + if(is.null(quantDatas)) stop("quantData must be provided or assignDist = TRUE") GENEIDs.i = as.numeric(factor(unique(mcols(annotations)$GENEID))) start.ptm <- proc.time() - - #load in the barcode clustering from file if provided - iter = seq_len(ncol(metadata(quantData)$countMatrix)) - if(!is.null(clusters)){ - if(!is.list(clusters)){ - clusterMap = read.table(clusters, - sep = ifelse(grepl(".tsv$",clusters), "\t", ","), header = FALSE) - clusters = splitAsList(clusterMap[,1], clusterMap[,2]) - rm(clusterMap) + countsSeCompressed.all = NULL + ColNames = c() + for(quantData in quantDatas){ + #load in the barcode clustering from file if provided + iter = seq_len(ncol(metadata(quantData)$countMatrix)) + if(!is.null(clusters)){ + if(!is.list(clusters)){ + clusterMap = read.table(clusters, + sep = ifelse(grepl(".tsv$",clusters), "\t", ","), header = FALSE) + clusters = splitAsList(clusterMap[,1], clusterMap[,2]) + rm(clusterMap) + } + iter = clusters } - iter = clusters - } - countsSeCompressed <- bplapply(iter, FUN = function(i){ - countMatrix = unname(metadata(quantData)$countMatrix[,i]) - incompatibleCountMatrix = unname(metadata(quantData)$incompatibleCountMatrix[,i]) - if(!is.null(dim(countMatrix))){ - countMatrix = rowSums(countMatrix) - incompatibleCountMatrix = rowSums(metadata(quantData)$incompatibleCountMatrix[,i]) + countsSeCompressed <- bplapply(iter, FUN = function(i){ + countMatrix = unname(metadata(quantData)$countMatrix[,i]) + incompatibleCountMatrix = unname(metadata(quantData)$incompatibleCountMatrix[,i]) + if(!is.null(dim(countMatrix))){ + countMatrix = rowSums(countMatrix) + incompatibleCountMatrix = rowSums(metadata(quantData)$incompatibleCountMatrix[,i]) + } + return(bambu.quantify(readClassDt = metadata(quantData)$readClassDt, countMatrix = countMatrix, + incompatibleCountMatrix = data.table(GENEID.i = as.numeric(rownames(metadata(quantData)$incompatibleCountMatrix)), counts = incompatibleCountMatrix), + txid.index = mcols(annotations)$txid, GENEIDs = GENEIDs.i, isoreParameters = isoreParameters, + emParameters = emParameters, trackReads = trackReads, + returnDistTable = returnDistTable, verbose = verbose))}, + BPPARAM = bpParameters) + end.ptm <- proc.time() + message("Total Time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") + if(!is.null(clusters)){ + ColNames = c(ColNames, names(clusters)) + } else{ + ColNames = c(ColNames, colnames(quantData)) } - return(bambu.quantify(readClassDt = metadata(quantData)$readClassDt, countMatrix = countMatrix, - incompatibleCountMatrix = data.table(GENEID.i = as.numeric(rownames(metadata(quantData)$incompatibleCountMatrix)), counts = incompatibleCountMatrix), - txid.index = mcols(annotations)$txid, GENEIDs = GENEIDs.i, isoreParameters = isoreParameters, - emParameters = emParameters, trackReads = trackReads, - returnDistTable = returnDistTable, verbose = verbose))}, - BPPARAM = bpParameters) - end.ptm <- proc.time() - message("Total Time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") - if(!is.null(clusters)){ - countsSeCompressed$colnames = names(clusters) - } else{ - countsSeCompressed$colnames = colnames(quantData) + countsSeCompressed.all = c(countsSeCompressed.all, countsSeCompressed) } - - countsSe <- combineCountSes(countsSeCompressed, annotations) + countsSeCompressed.all$colnames = ColNames + #return(countsSeCompressed.all) + countsSe <- combineCountSes(countsSeCompressed.all, annotations) #metadata(countsSe)$warnings = warnings # if (trackReads) metadata(seOutput)$readToTranscriptMap = # generateReadToTranscriptMap(readClass, metadata(readClassDist)$distTable, # annotations) # if (returnDistTable) metadata(seOutput)$distTable = metadata(readClassDist)$distTable - ColData = generateColData(colnames(countsSe), clusters, demultiplexed, spatial) colData(countsSe) = ColData colnames(countsSe) = ColData[,1] diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index 864f022c..2c90f491 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -84,9 +84,7 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, } # remove microexons of width 1bp from list readGrgList <- readGrgList[width(readGrgList) > 1] - print(head(mcols(readGrgList))) numNoBCs = sum(is.na(mcols(readGrgList)$BC)) - print(numNoBCs) if(numNoBCs > 0){ message("Removing ", numNoBCs, " reads that were not assigned barcodes. If this is unexpected check the barcode map input") readGrgList = readGrgList[!is.na(mcols(readGrgList)$BC)] From 716370c3b67c5d92ff649ba6405ade3068940020 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 2 Sep 2024 13:31:57 +0800 Subject: [PATCH 118/189] Can now provide multiple clusterings per quant input --- R/bambu.R | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 7e0d0c72..0f3abb6c 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -206,17 +206,18 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, start.ptm <- proc.time() countsSeCompressed.all = NULL ColNames = c() - for(quantData in quantDatas){ + for(i in seq_along(quantDatas)){ + quantData = quantDatas[[i]] #load in the barcode clustering from file if provided iter = seq_len(ncol(metadata(quantData)$countMatrix)) if(!is.null(clusters)){ if(!is.list(clusters)){ - clusterMap = read.table(clusters, - sep = ifelse(grepl(".tsv$",clusters), "\t", ","), header = FALSE) - clusters = splitAsList(clusterMap[,1], clusterMap[,2]) + clusterMap = read.table(clusters[[i]], + sep = ifelse(grepl(".tsv$",clusters[[i]]), "\t", ","), header = FALSE) + clustering = splitAsList(clusterMap[,1], clusterMap[,2]) rm(clusterMap) } - iter = clusters + iter = clustering } countsSeCompressed <- bplapply(iter, FUN = function(i){ From 8fb23e0703a37252205100aa26c7b29d49e49470 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 2 Sep 2024 16:30:34 +0800 Subject: [PATCH 119/189] tidy up --- R/bambu-assignDist.R | 4 ++-- R/bambu-processReads.R | 4 ++-- R/bambu.R | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/R/bambu-assignDist.R b/R/bambu-assignDist.R index 88e74eca..6a5b15fe 100644 --- a/R/bambu-assignDist.R +++ b/R/bambu-assignDist.R @@ -2,7 +2,7 @@ #' @inheritParams bambu #' @import data.table #' @noRd -assignReadClasstoTranscripts <- function(readClassList, annotations, isoreParameters, verbose, clusters, demultiplexed, spatial) { +assignReadClasstoTranscripts <- function(readClassList, annotations, isoreParameters, verbose, demultiplexed, spatial) { metadata(readClassList)$readClassDist <- calculateDistTable(readClassList, annotations, isoreParameters, verbose) readClassList = splitReadClassFiles(readClassList) readClassDt <- genEquiRCs(metadata(readClassList)$readClassDist, annotations, verbose) @@ -13,7 +13,7 @@ assignReadClasstoTranscripts <- function(readClassList, annotations, isoreParame data.table() #return non-em counts - ColData = generateColData(colnames(metadata(readClassList)$countMatrix), clusters, demultiplexed, spatial) + ColData = generateColData(colnames(metadata(readClassList)$countMatrix), clusters = NULL, demultiplexed, spatial) quantData <- SummarizedExperiment(assays = SimpleList( counts = generateUniqueCounts(readClassDt, metadata(readClassList)$countMatrix, annotations)), rowRanges = annotations, diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 3d94b875..8fb43bfa 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -222,7 +222,7 @@ bambu.readsByFile <- function(bam.file, genomeSequence, annotations, verbose = FALSE, trackReads = FALSE, fusionMode = FALSE, demultiplexed = FALSE, cleanReads = TRUE, dedupUMI = FALSE, index = 0) { readGrgList <- prepareDataFromBam(bam.file[[1]], verbose = verbose, yieldSize = yieldSize, use.names = trackReads, demultiplexed = demultiplexed, cleanReads = cleanReads, dedupUMI = dedupUMI) - if(verbose) message("Number of alignments/reads: ",length(readGrgList))) + if(verbose) message("Number of alignments/reads: ",length(readGrgList)) warnings = c() warnings = seqlevelCheckReadsAnnotation(readGrgList, annotations) if(verbose & length(warnings) > 0) {warning(paste(warnings,collapse = "\n"))} @@ -265,7 +265,7 @@ bambu.readsByFile <- function(bam.file, genomeSequence, annotations, # reassign Ids after seqlevels are dropped mcols(readGrgList)$id <- seq_along(readGrgList) ### add ### - if(verbose) message("Number of post-filter alignments/reads: ",length(readGrgList))) + if(verbose) message("Number of post-filter alignments/reads: ",length(readGrgList)) if(length(readGrgList) == 0) { stop("No reads left after filtering.") } diff --git a/R/bambu.R b/R/bambu.R index 0f3abb6c..d576e6b8 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -191,8 +191,8 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, if (is.character(readClassList)) readClassList <- readRDS(file = readClassList) #if(is.list(readClassList)) readClassList = readClassList[[1]] quantDatas = bplapply(readClassList, FUN = assignReadClasstoTranscripts, - annotations = annotations, isoreParameters = isoreParameters, verbose = verbose, - clusters = clusters, demultiplexed = demultiplexed, spatial = spatial, + annotations = annotations, isoreParameters = isoreParameters, verbose = verbose, + demultiplexed = demultiplexed, spatial = spatial, BPPARAM = bpParameters) if (!quant) return(quantDatas) } From 55177e22146966e528e82a2a3e841c3ec8161d71 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 2 Sep 2024 19:33:50 +0800 Subject: [PATCH 120/189] clean up warnings --- ...-processReads_utilityConstructReadClasses.R | 18 ++++++++++++------ R/prepareDataFromBam.R | 8 ++++---- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/R/bambu-processReads_utilityConstructReadClasses.R b/R/bambu-processReads_utilityConstructReadClasses.R index 1972dab5..1f4094e2 100644 --- a/R/bambu-processReads_utilityConstructReadClasses.R +++ b/R/bambu-processReads_utilityConstructReadClasses.R @@ -462,11 +462,13 @@ assignGeneIdsByReference <- function(grl, annotations, min.exonOverlap = 10, geneIds[filteredMultiHits$queryHits] <- filteredMultiHits$geneid } else { - filteredMultiHits <- filteredMultiHits %>% - group_by(queryHits) %>% summarise(subjectHits = subjectHits[which.max(intersectWidth)], - intersectWidth = max(intersectWidth)) - geneIds[filteredMultiHits$queryHits] <- - names(geneRanges)[filteredMultiHits$subjectHits] + if(nrow(filteredMultiHits) > 0){ + filteredMultiHits <- filteredMultiHits %>% + group_by(queryHits) %>% summarise(subjectHits = subjectHits[which.max(intersectWidth)], + intersectWidth = max(intersectWidth)) + geneIds[filteredMultiHits$queryHits] <- + names(geneRanges)[filteredMultiHits$subjectHits] + } } } return(geneIds) @@ -581,7 +583,11 @@ assignGeneIdsNonAssigned = function(geneTxMap, exonTxMap, geneExonMap, dplyr::select(newGeneId, newExonId) %>% distinct() } # combined gene ids - refGeneTxMapMins = refGeneTxMap %>% group_by(newTxId) %>% filter(n() > 1) %>% filter(newGeneId == min(newGeneId)) %>% ungroup() + refGeneTxMap.tmp = refGeneTxMap %>% group_by(newTxId) %>% filter(n() > 1) + if(nrow(refGeneTxMap.tmp) == 0){refGeneTxMapMins = refGeneTxMap[0,] + } else{ + refGeneTxMapMins = refGeneTxMap.tmp %>% filter(newGeneId == min(newGeneId)) %>% ungroup() + } refGeneTxMapNotMins = refGeneTxMap %>% group_by(newTxId) %>% filter(newGeneId != min(newGeneId)) %>% ungroup() geneGeneMap <- left_join(refGeneTxMapMins, dplyr::rename(refGeneTxMapNotMins, newGeneId.merge=newGeneId), by = "newTxId") %>% diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index 2c90f491..35bedc13 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -59,10 +59,10 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, mcols(readGrgList[[counter]])$UMI <- factor(mcols(readGrgList[[counter]])$UMI, levels = umi) } if(cleanReads){ - softClip5Prime <-pmax(0,as.numeric(gsub('^(\\d*)[S].*','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T) - softClip3Prime <-pmax(0,as.numeric(gsub('.*\\D(\\d*)[S]$','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T) - hardClip5Prime <-pmax(0,as.numeric(gsub('^(\\d*)[H].*','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T) - hardClip3Prime <-pmax(0,as.numeric(gsub('.*\\D(\\d*)[H]$','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T) + softClip5Prime <-suppressWarnings(pmax(0,as.numeric(gsub('^(\\d*)[S].*','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T)) + softClip3Prime <-suppressWarnings(pmax(0,as.numeric(gsub('.*\\D(\\d*)[S]$','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T)) + hardClip5Prime <-suppressWarnings(pmax(0,as.numeric(gsub('^(\\d*)[H].*','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T)) + hardClip3Prime <-suppressWarnings(pmax(0,as.numeric(gsub('.*\\D(\\d*)[H]$','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T)) mcols(readGrgList[[counter]])$clip5Prime = pmax(softClip5Prime, hardClip5Prime) mcols(readGrgList[[counter]])$clip3Prime = pmax(softClip3Prime, hardClip3Prime) rev = as.vector(strand(alignmentInfo) == '-') From c64d66725934460da98b55103f14511bfd7c8c85 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 3 Sep 2024 16:33:38 +0800 Subject: [PATCH 121/189] Make sure column names are present when providing clusters --- R/bambu.R | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index d576e6b8..eae39349 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -216,8 +216,9 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, sep = ifelse(grepl(".tsv$",clusters[[i]]), "\t", ","), header = FALSE) clustering = splitAsList(clusterMap[,1], clusterMap[,2]) rm(clusterMap) + iter = clustering } - iter = clustering + iter = clusters[[i]] } countsSeCompressed <- bplapply(iter, FUN = function(i){ @@ -236,7 +237,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, end.ptm <- proc.time() message("Total Time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") if(!is.null(clusters)){ - ColNames = c(ColNames, names(clusters)) + ColNames = c(ColNames, names(clusters[i])) } else{ ColNames = c(ColNames, colnames(quantData)) } From 87dc7942abc26e957972a9f19080570a0d0f7540 Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 4 Sep 2024 14:40:38 +0800 Subject: [PATCH 122/189] fix colData bug missing names --- R/bambu.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/bambu.R b/R/bambu.R index eae39349..66d87e0d 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -237,7 +237,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, end.ptm <- proc.time() message("Total Time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") if(!is.null(clusters)){ - ColNames = c(ColNames, names(clusters[i])) + ColNames = c(ColNames, names(iter)) } else{ ColNames = c(ColNames, colnames(quantData)) } From 8931903838a074c24850c8cec3ddf831391b7438 Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 4 Sep 2024 16:14:41 +0800 Subject: [PATCH 123/189] Track sample names into quantData --- R/bambu-assignDist.R | 2 +- R/bambu-processReads.R | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/R/bambu-assignDist.R b/R/bambu-assignDist.R index 6a5b15fe..052622ce 100644 --- a/R/bambu-assignDist.R +++ b/R/bambu-assignDist.R @@ -24,7 +24,7 @@ assignReadClasstoTranscripts <- function(readClassList, annotations, isoreParame metadata(quantData)$readClassDt = readClassDt metadata(quantData)$countMatrix = metadata(readClassList)$countMatrix metadata(quantData)$incompatibleCountMatrix = metadata(readClassList)$incompatibleCountMatrix - + metadata(quantData)$sampleNames = metadata(readClassList)$sampleNames return(quantData) } diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 8fb43bfa..24d79459 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -97,6 +97,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, trackReads = trackReads, fusionMode = fusionMode) metadata(readClassList)$samples = names(reads) + metadata(readClassList)$sampleNames = names(reads) if(!isFALSE(demultiplexed))metadata(readClassList)$samples = levels(mcols(readGrgList)$BC) readClassList = list(readClassList) } @@ -208,6 +209,7 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, verbose = verbose) metadata(se)$samples = names(bam.file)[1] + metadata(readClassList)$sampleNames = names(bam.file)[1] if(!isFALSE(demultiplexed))metadata(se)$samples = levels(mcols(readGrgList)$BC) return(se) } From 76799124c419fdf1d1e8c703a62e8b1771a8a00a Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 4 Sep 2024 16:18:02 +0800 Subject: [PATCH 124/189] Fix clustering to work with different input combinations remove print --- R/bambu.R | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 66d87e0d..d5af46f1 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -212,15 +212,23 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, iter = seq_len(ncol(metadata(quantData)$countMatrix)) if(!is.null(clusters)){ if(!is.list(clusters)){ - clusterMap = read.table(clusters[[i]], - sep = ifelse(grepl(".tsv$",clusters[[i]]), "\t", ","), header = FALSE) - clustering = splitAsList(clusterMap[,1], clusterMap[,2]) + clusterMaps = NULL + for(j in seq_along(metadata(quantData)$sampleNames)){ #load in a file per sample name provided + clusterMap = read.table(clusters[[j]], + sep = ifelse(grepl(".tsv$",clusters[[j]]), "\t", ","), header = FALSE) + clusterMap[,1] = paste0(metadata(quantData)$sampleNames[j],"_",clusterMap[,1]) + clusterMaps = rbind(clusterMaps, clusterMap) + } + clustering = splitAsList(clusterMaps[,1], clusterMaps[,2]) + rm(clusterMaps) rm(clusterMap) iter = clustering + + } else{ #if clusters is a list + if(length(quantDatas)>1){iter = clusters[[i]] #lowMemory mode + }else(iter = do.call(c,clusters)) } - iter = clusters[[i]] } - countsSeCompressed <- bplapply(iter, FUN = function(i){ countMatrix = unname(metadata(quantData)$countMatrix[,i]) incompatibleCountMatrix = unname(metadata(quantData)$incompatibleCountMatrix[,i]) From 2e30fc4f443820aa6e2755747ff5e220d4cfc744 Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 4 Sep 2024 16:24:33 +0800 Subject: [PATCH 125/189] bug fix missing sampleNames --- R/bambu-processReads.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 24d79459..c8a0571b 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -209,7 +209,7 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, verbose = verbose) metadata(se)$samples = names(bam.file)[1] - metadata(readClassList)$sampleNames = names(bam.file)[1] + metadata(se)$sampleNames = names(bam.file)[1] if(!isFALSE(demultiplexed))metadata(se)$samples = levels(mcols(readGrgList)$BC) return(se) } From 0fd3f9e23619f01e57c373a6cc78b5780cba1d41 Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 4 Sep 2024 17:01:35 +0800 Subject: [PATCH 126/189] make sure EM counts are labeled as such --- R/bambu_utilityFunctions.R | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index e495126a..65313318 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -262,9 +262,9 @@ combineCountSes <- function(countsSe, annotations){ return(countsMat) }) names(countsDataMat) = countsData - countsSe <- SummarizedExperiment(assays = SimpleList(counts = countsDataMat$counts, - CPM = countsDataMat$CPM, - fullLengthCounts = countsDataMat$fullLengthCounts, + countsSe <- SummarizedExperiment(assays = SimpleList(EM_counts = countsDataMat$counts, + EM_CPM = countsDataMat$CPM, + EM_fullLengthCounts = countsDataMat$fullLengthCounts, uniqueCounts = countsDataMat$uniqueCounts)) metadata(countsSe)$incompatibleCounts <- countsDataMat$incompatibleCounts rowRanges(countsSe) <- annotations From e6736bffdf243a570283951f1c148d77ed9fa049 Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 4 Sep 2024 17:17:51 +0800 Subject: [PATCH 127/189] undo EM counts naming --- R/bambu_utilityFunctions.R | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index 65313318..e495126a 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -262,9 +262,9 @@ combineCountSes <- function(countsSe, annotations){ return(countsMat) }) names(countsDataMat) = countsData - countsSe <- SummarizedExperiment(assays = SimpleList(EM_counts = countsDataMat$counts, - EM_CPM = countsDataMat$CPM, - EM_fullLengthCounts = countsDataMat$fullLengthCounts, + countsSe <- SummarizedExperiment(assays = SimpleList(counts = countsDataMat$counts, + CPM = countsDataMat$CPM, + fullLengthCounts = countsDataMat$fullLengthCounts, uniqueCounts = countsDataMat$uniqueCounts)) metadata(countsSe)$incompatibleCounts <- countsDataMat$incompatibleCounts rowRanges(countsSe) <- annotations From fe42c0bcb9df0b2a836b31283cdf1b0834432e37 Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 4 Sep 2024 17:28:25 +0800 Subject: [PATCH 128/189] name sampleData with prefix --- R/readWrite.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/readWrite.R b/R/readWrite.R index 7cc5b783..48d79abf 100644 --- a/R/readWrite.R +++ b/R/readWrite.R @@ -31,7 +31,7 @@ writeBambuOutput <- function(se, path, prefix = "", seperateSamples = FALSE) { gtf <- writeToGTF(annotation = transcript_grList, file = transcript_gtffn) - utils::write.table(colData(se), file = paste0(outdir, "/sampleData.tsv"), + utils::write.table(colData(se), file = paste0(outdir, "/", prefix, "sampleData.tsv"), sep = "\t", quote = FALSE, row.names = FALSE, col.names = TRUE) for(d in names(assays(se))){ writeCountsOutput(se, varname=d, @@ -71,7 +71,7 @@ writeBambuOutput <- function(se, path, prefix = "", seperateSamples = FALSE) { Matrix::writeMM(estimates, estimatesfn) seGene <- transcriptToGeneExpression(se) writeCountsOutput(seGene, varname='counts', feature='gene',paste0(outdir, sampleName,"/"), prefix) - utils::write.table(colData(se), file = paste0(outdir, "/", sampleName, "/sampleData.tsv"), + utils::write.table(colData(se), file = paste0(outdir, "/", sampleName, "/", prefix, "sampleData.tsv"), sep = "\t", quote = FALSE, row.names = FALSE, col.names = TRUE) #utils::write.table(paste0(colnames(se), "-1"), file = paste0(outdir, "barcodes.tsv"), quote = FALSE, row.names = FALSE, col.names = FALSE) } From f5b5e1024d479199662ea234c6c7b4f5beb46f10 Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 20 Sep 2024 13:20:17 +0800 Subject: [PATCH 129/189] catch error when 0 or 1 genes have counts same error --- R/bambu-assignDist.R | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/R/bambu-assignDist.R b/R/bambu-assignDist.R index 052622ce..abd334ea 100644 --- a/R/bambu-assignDist.R +++ b/R/bambu-assignDist.R @@ -19,7 +19,11 @@ assignReadClasstoTranscripts <- function(readClassList, annotations, isoreParame rowRanges = annotations, colData = ColData) colnames(quantData) = ColData$id - metadata(quantData)$incompatibleCounts = generateIncompatibleCounts(metadata(readClassList)$incompatibleCountMatrix, annotations) + if(sum(metadata(readClassList)$incompatibleCountMatrix)==0){ + metadata(quantData)$incompatibleCounts = NULL + } else{ + metadata(quantData)$incompatibleCounts = generateIncompatibleCounts(metadata(readClassList)$incompatibleCountMatrix, annotations) + } metadata(quantData)$nonuniqueCounts = generateNonUniqueCounts(readClassDt, metadata(readClassList)$countMatrix, annotations) metadata(quantData)$readClassDt = readClassDt metadata(quantData)$countMatrix = metadata(readClassList)$countMatrix @@ -60,9 +64,11 @@ generateNonUniqueCounts <- function(readClassDt, countMatrix, annotations){ #fuse multi align RCs by gene x = readClassDt %>% filter(multi_align & !is.na(eqClass.match)) x = x %>% distinct(eqClassId, .keep_all = TRUE) - nonuniqueCounts = countMatrix[x$eqClass.match,] + nonuniqueCounts = countMatrix[x$eqClass.match,, drop = FALSE] + if(nrow(x)>1){ nonuniqueCounts.gene = sparse.model.matrix(~ factor(x$gene_sid) - 1) nonuniqueCounts = t(nonuniqueCounts.gene) %*% nonuniqueCounts + } #covert ids into gene ids geneids = as.numeric(levels(factor(x$gene_sid))) geneids = x$txid[match(geneids, x$gene_sid)] From e9ecc7bdfeafad09fd2143e592bc282f8ea6f384 Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 4 Oct 2024 15:45:35 +0800 Subject: [PATCH 130/189] pass fusionmode to contruct read classes --- R/bambu-processReads.R | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index c8a0571b..8486a84e 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -295,7 +295,7 @@ constructReadClasses <- function(readGrgList, genomeSequence, annotations, warnings = c() ###TODO # construct read classes for each chromosome seperately se <- lowMemoryConstructReadClasses(readGrgList, genomeSequence, - annotations, stranded, verbose,"TODO") + annotations, stranded, verbose,"TODO", fusionMode) metadata(se)$warnings = warnings if(trackReads){ @@ -318,8 +318,13 @@ constructReadClasses <- function(readGrgList, genomeSequence, annotations, } lowMemoryConstructReadClasses <- function(readGrgList, genomeSequence, - annotations, stranded, verbose,bam.file){ - readGrgList = split(readGrgList, getChrFromGrList(readGrgList)) + annotations, stranded, verbose,bam.file, fusionMode = FALSE){ + if(fusionMode){ + readGrgList = list(readGrgList) + names(readGrgList) = c("fusion") + } else{ + readGrgList = split(readGrgList, getChrFromGrList(readGrgList)) + } se = lapply(names(readGrgList),FUN = function(i){ if(length(readGrgList[[i]]) == 0) return(NULL) # create error and strand corrected junction tables From 773d88cd51e10ec478edfbd21983196773d977fd Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 21 Oct 2024 11:21:52 +0800 Subject: [PATCH 131/189] Dont filter out reads that align up to the last nucleotide - fusions --- R/bambu-processReads.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 8486a84e..d64b2c68 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -162,7 +162,7 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, mcols(readGrgList)$id <- seq_along(readGrgList) } #removes reads that are outside genome coordinates - badReads = which(max(end(ranges(readGrgList)))>= + badReads = which(max(end(ranges(readGrgList)))> seqlengths(genomeSequence)[as.character(getChrFromGrList(readGrgList))]) if(length(badReads) > 0 ){ readGrgList = readGrgList[-badReads] From d181c8e45854e37dcc85735b13ed1cc1555b87bf Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 25 Oct 2024 11:14:02 +0800 Subject: [PATCH 132/189] Now will only combine SE read classes if min.txScore.singleExon < 1 --- R/bambu-extendAnnotations-utilityCombine.R | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/R/bambu-extendAnnotations-utilityCombine.R b/R/bambu-extendAnnotations-utilityCombine.R index 58ec1dfa..1bb7b8c8 100644 --- a/R/bambu-extendAnnotations-utilityCombine.R +++ b/R/bambu-extendAnnotations-utilityCombine.R @@ -21,15 +21,15 @@ isore.combineTranscriptCandidates <- function(readClassList, min.txScore.multiExon, min.txScore.singleExon, verbose) %>% data.table() message("finished combineSplicedTranscriptModels") combinedSplicedTranscripts[,confidenceType := "highConfidenceJunctionReads"] - return(combinedSplicedTranscripts) - # combinedUnsplicedTranscripts <- - # combineUnsplicedTranscriptModels(readClassList, bpParameters, - # stranded, min.readCount, min.readFractionByGene, - # min.txScore.multiExon, min.txScore.singleExon, verbose) %>% data.table() - # combinedUnsplicedTranscripts[, confidenceType := "unsplicedNew"] - # combinedTranscripts <- as_tibble(rbindlist(list(combinedSplicedTranscripts, - # combinedUnsplicedTranscripts), fill = TRUE)) - # return(combinedTranscripts) + if (min.txScore.singleExon < 1) {return(combinedSplicedTranscripts)} + combinedUnsplicedTranscripts <- + combineUnsplicedTranscriptModels(readClassList, bpParameters, + stranded, min.readCount, min.readFractionByGene, + min.txScore.multiExon, min.txScore.singleExon, verbose) %>% data.table() + combinedUnsplicedTranscripts[, confidenceType := "unsplicedNew"] + combinedTranscripts <- as_tibble(rbindlist(list(combinedSplicedTranscripts, + combinedUnsplicedTranscripts), fill = TRUE)) + return(combinedTranscripts) } From 77cae135bb57a6addd302c15d929c47cbb59a02a Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 25 Oct 2024 14:21:26 +0800 Subject: [PATCH 133/189] Update release history --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index d5b3b4da..c0aa3cd0 100755 --- a/README.md +++ b/README.md @@ -547,6 +547,17 @@ warnings - A list containing the warnings produced by each sample ### Release History +**bambu v3.3.0** + +Release date: 2023-October-25 + +Minor changes: + +- Fix crash cause by de novo mode +- Restore fusion mode functionality and added documentation +- Fixed bug in plot function +- Update release history + **bambu v3.2.5** Release date: 2023-July-07 From 9f888891db84595befca4f622099cd6dc3819411 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 28 Oct 2024 10:18:49 +0800 Subject: [PATCH 134/189] Fix merge Combine the change to unspliced read mutating with the inclusion of sample id Fix bug during extendAnno where wrong variable was provided when determining the number of novel genes --- R/bambu-extendAnnotations-utilityExtend.R | 2 +- R/bambu-processReads_utilityConstructReadClasses.R | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index 615ab3a8..cbdddcb6 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -44,7 +44,7 @@ isore.extendAnnotations <- function(combinedTranscripts, annotationGrangesList, rowDataCombined, annotationGrangesList, exonRangesCombined, prefix, remove.subsetTx, min.readFractionByEqClass, baselineFDR, NDR, defaultModels, verbose) message(paste0("Novel transcripts detected: ", sum(mcols(extendedAnnotationRanges)$novelTranscript))) - message(paste0("Novel genes detected: ", length(unique(mcols(se)$GENEID[mcols(se)$novelGene])))) + message(paste0("Novel genes detected: ", length(unique(mcols(extendedAnnotationRanges)$GENEID[mcols(extendedAnnotationRanges)$novelGene])))) message(paste0("Low confidence transcripts excluded: ", length(metadata(extendedAnnotationRanges)$lowConfidenceTranscripts))) return(extendedAnnotationRanges) } else { diff --git a/R/bambu-processReads_utilityConstructReadClasses.R b/R/bambu-processReads_utilityConstructReadClasses.R index 6717c7af..fec9adbf 100644 --- a/R/bambu-processReads_utilityConstructReadClasses.R +++ b/R/bambu-processReads_utilityConstructReadClasses.R @@ -251,13 +251,11 @@ constructUnsplicedReadClasses <- function(reads.singleExon, annotations, mutate(id = mcols(reads.singleExon)$id, sampleID = mcols(reads.singleExon)$sampleID) %>% group_by(seqnames,start,end,strand) %>% - mutate(n=n(), id = list(id)) %>% # change summarise to mutate as summarise will reorder the table + mutate(counts=n(), id = list(id), sampleID = list(sampleID)) %>% ungroup() %>% - summarise(counts=n(), id = list(id), sampleID = list(sampleID)) %>% as.data.frame() - mcols(reads.singleExon)$counts <- counts$n - mcols(reads.singleExon)$id <- counts$id - reads.singleExon = unique(reads.singleExon) + reads.singleExon = GRanges(counts) + reads.singleExon = unique(reads.singleExon) rcUnsplicedAnnotation <- getUnsplicedReadClassByReference( granges = reads.singleExon, grangesReference = referenceExons, From e133c43fba9e7de2478fec98100c3a5e4a01c499 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 28 Oct 2024 10:46:49 +0800 Subject: [PATCH 135/189] Refactor quantData input parameter and colData when not multiplexed --- R/bambu.R | 28 ++++++++++++++-------------- R/bambu_utilityFunctions.R | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 31a08174..68e6ae4a 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -192,11 +192,11 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, message("--- Start calculating equivilance classes ---") if (is.character(readClassList)) readClassList <- readRDS(file = readClassList) #if(is.list(readClassList)) readClassList = readClassList[[1]] - quantDatas = bplapply(readClassList, FUN = assignReadClasstoTranscripts, + quantData = bplapply(readClassList, FUN = assignReadClasstoTranscripts, annotations = annotations, isoreParameters = isoreParameters, verbose = verbose, demultiplexed = demultiplexed, spatial = spatial, BPPARAM = bpParameters) - if (!quant) return(quantDatas) + if (!quant) return(quantData) } if (quant) { @@ -207,22 +207,22 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, defaultModels2 = isoreParameters[["defaultModels"]]) if(length(annotations)==0) stop("No valid annotations, if running de novo please try less stringent parameters") - if(is.null(quantDatas)) stop("quantData must be provided or assignDist = TRUE") + if(is.null(quantData)) stop("quantData must be provided or assignDist = TRUE") GENEIDs.i = as.numeric(factor(unique(mcols(annotations)$GENEID))) start.ptm <- proc.time() countsSeCompressed.all = NULL ColNames = c() - for(i in seq_along(quantDatas)){ - quantData = quantDatas[[i]] + for(i in seq_along(quantData)){ + quantData_i = quantData[[i]] #load in the barcode clustering from file if provided - iter = seq_len(ncol(metadata(quantData)$countMatrix)) + iter = seq_len(ncol(metadata(quantData_i)$countMatrix)) if(!is.null(clusters)){ if(!is.list(clusters)){ clusterMaps = NULL - for(j in seq_along(metadata(quantData)$sampleNames)){ #load in a file per sample name provided + for(j in seq_along(metadata(quantData_i)$sampleNames)){ #load in a file per sample name provided clusterMap = read.table(clusters[[j]], sep = ifelse(grepl(".tsv$",clusters[[j]]), "\t", ","), header = FALSE) - clusterMap[,1] = paste0(metadata(quantData)$sampleNames[j],"_",clusterMap[,1]) + clusterMap[,1] = paste0(metadata(quantData_i)$sampleNames[j],"_",clusterMap[,1]) clusterMaps = rbind(clusterMaps, clusterMap) } clustering = splitAsList(clusterMaps[,1], clusterMaps[,2]) @@ -236,14 +236,14 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, } } countsSeCompressed <- bplapply(iter, FUN = function(i){ - countMatrix = unname(metadata(quantData)$countMatrix[,i]) - incompatibleCountMatrix = unname(metadata(quantData)$incompatibleCountMatrix[,i]) + countMatrix = unname(metadata(quantData_i)$countMatrix[,i]) + incompatibleCountMatrix = unname(metadata(quantData_i)$incompatibleCountMatrix[,i]) if(!is.null(dim(countMatrix))){ countMatrix = rowSums(countMatrix) - incompatibleCountMatrix = rowSums(metadata(quantData)$incompatibleCountMatrix[,i]) + incompatibleCountMatrix = rowSums(metadata(quantData_i)$incompatibleCountMatrix[,i]) } - return(bambu.quantify(readClassDt = metadata(quantData)$readClassDt, countMatrix = countMatrix, - incompatibleCountMatrix = data.table(GENEID.i = as.numeric(rownames(metadata(quantData)$incompatibleCountMatrix)), counts = incompatibleCountMatrix), + return(bambu.quantify(readClassDt = metadata(quantData_i)$readClassDt, countMatrix = countMatrix, + incompatibleCountMatrix = data.table(GENEID.i = as.numeric(rownames(metadata(quantData_i)$incompatibleCountMatrix)), counts = incompatibleCountMatrix), txid.index = mcols(annotations)$txid, GENEIDs = GENEIDs.i, isoreParameters = isoreParameters, emParameters = emParameters, trackReads = trackReads, returnDistTable = returnDistTable, verbose = verbose))}, @@ -253,7 +253,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, if(!is.null(clusters)){ ColNames = c(ColNames, names(iter)) } else{ - ColNames = c(ColNames, colnames(quantData)) + ColNames = c(ColNames, colnames(quantData_i)) } countsSeCompressed.all = c(countsSeCompressed.all, countsSeCompressed) } diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index 1c3051c2..932a7bcb 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -274,7 +274,7 @@ combineCountSes <- function(countsSe, annotations){ #' Generate the coldata for se options using colnames, and other option inputs #' @noRd generateColData <- function(sampleNames, clusters, demultiplexed, spatial){ - ColData = DataFrame(sampleName = sampleNames) + ColData = DataFrame(id = sampleNames) if(demultiplexed & is.null(clusters)){ ColData = DataFrame(id = sampleNames, sampleName = gsub("_[^_]+$","", sampleNames, perl = TRUE), From 23e02121ef778c8be3bc39a6ca7ca5f9ab40d54d Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Mon, 28 Oct 2024 10:54:54 +0800 Subject: [PATCH 136/189] update actions versions --- .github/workflows/check-bioc.yml | 18 +++++++++--------- .github/workflows/lint.yaml | 2 +- .github/workflows/pr-commands.yaml | 4 ++-- .github/workflows/test-coverage.yaml | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/check-bioc.yml b/.github/workflows/check-bioc.yml index 5927ff7e..6263b116 100644 --- a/.github/workflows/check-bioc.yml +++ b/.github/workflows/check-bioc.yml @@ -40,7 +40,7 @@ env: run_covr: 'false' run_pkgdown: 'false' has_RUnit: 'false' - cache-version: 'cache-v3' + cache-version: 'cache-v4' run_docker: 'false' jobs: @@ -54,9 +54,9 @@ jobs: fail-fast: false matrix: config: - - { os: ubuntu-latest, r: '4.3', bioc: '3.18', cont: "bioconductor/bioconductor_docker:RELEASE_3_18", rspm: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest" } - - { os: macOS-latest, r: '4.3', bioc: '3.18'} - ##- { os: windows-latest, r: '4.3', bioc: '3.18'} + - { os: ubuntu-latest, r: '4.4', bioc: '3.19', cont: "bioconductor/bioconductor_docker:RELEASE_3_19", rspm: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest" } + - { os: macOS-latest, r: '4.4', bioc: '3.19'} + - { os: windows-latest, r: '4.4', bioc: '3.19'} ## Check https://github.com/r-lib/actions/tree/master/examples ## for examples using the http-user-agent env: @@ -81,7 +81,7 @@ jobs: ## https://github.com/r-lib/actions/blob/master/examples/check-standard.yaml ## If they update their steps, we will also need to update ours. - name: Checkout Repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 ## R is already included in the Bioconductor docker images - name: Setup R from r-lib @@ -104,7 +104,7 @@ jobs: - name: Restore R package cache if: "!contains(github.event.head_commit.message, '/nocache') && runner.os != 'Linux'" - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ${{ env.R_LIBS_USER }} key: ${{ env.cache-version }}-${{ runner.os }}-biocversion-RELEASE-r-4.3-${{ hashFiles('.github/depends.Rds') }} @@ -112,7 +112,7 @@ jobs: - name: Cache R packages on Linux if: "!contains(github.event.head_commit.message, '/nocache') && runner.os == 'Linux' " - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: /home/runner/work/_temp/Library key: ${{ env.cache-version }}-${{ runner.os }}-biocversion-devel-r-4.3-${{ hashFiles('.github/depends.Rds') }} @@ -337,9 +337,9 @@ jobs: - name: Upload check results if: failure() - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: - name: ${{ runner.os }}-biocversion-RELEASE-r-4.3-results + name: ${{ runner.os }}-biocversion-RELEASE-r-4.4-results path: check - uses: docker/build-push-action@v1 diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 9daaa663..aa29e0f1 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -15,7 +15,7 @@ jobs: env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - uses: r-lib/actions/setup-r@v2 with: diff --git a/.github/workflows/pr-commands.yaml b/.github/workflows/pr-commands.yaml index 98ca228b..35d14666 100644 --- a/.github/workflows/pr-commands.yaml +++ b/.github/workflows/pr-commands.yaml @@ -14,7 +14,7 @@ jobs: env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - uses: r-lib/actions/pr-fetch@v2 with: @@ -49,7 +49,7 @@ jobs: env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - uses: r-lib/actions/pr-fetch@v2 with: diff --git a/.github/workflows/test-coverage.yaml b/.github/workflows/test-coverage.yaml index a1b6e36e..58383454 100644 --- a/.github/workflows/test-coverage.yaml +++ b/.github/workflows/test-coverage.yaml @@ -16,7 +16,7 @@ jobs: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: r-lib/actions/setup-r@v2 with: From c537224d88420db370b781bde6593409c334fe18 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 28 Oct 2024 11:15:32 +0800 Subject: [PATCH 137/189] Restore seperateSamples argument in writeBambuOutput lost in merge --- R/readWrite.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/readWrite.R b/R/readWrite.R index f867093b..9574a63d 100644 --- a/R/readWrite.R +++ b/R/readWrite.R @@ -17,7 +17,7 @@ #' path <- tempdir() #' writeBambuOutput(se, path) writeBambuOutput <- function(se, path, prefix = "", outputExtendedAnno = TRUE, - outputAll = TRUE, outputBambuModels = TRUE, outputNovelOnly = TRUE) { + outputAll = TRUE, outputBambuModels = TRUE, outputNovelOnly = TRUE, seperateSamples = FALSE) { if (missing(se) | missing(path)) { stop("Both summarizedExperiment object from bambu and the path for the output files are required.") From 0024c5fc7ba96cc8b499b733030d93e4a1da0d73 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 28 Oct 2024 13:17:29 +0800 Subject: [PATCH 138/189] Put gtf file extension at the end of writeBambuOutput --- R/readWrite.R | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/R/readWrite.R b/R/readWrite.R index 9574a63d..81dfa80e 100644 --- a/R/readWrite.R +++ b/R/readWrite.R @@ -28,7 +28,7 @@ writeBambuOutput <- function(se, path, prefix = "", outputExtendedAnno = TRUE, transcript_grList <- rowRanges(se) transcript_gtffn <- paste(outdir, prefix, - "extended_annotations.gtf", sep = "") + "extended_annotations", sep = "") gtf <- writeAnnotationsToGTF(annotation = transcript_grList, file = transcript_gtffn, outputExtendedAnno = TRUE, outputAll = TRUE, outputBambuModels = TRUE, outputNovelOnly = TRUE) @@ -231,24 +231,24 @@ writeToGTF <- function(annotation, file, geneIDs = NULL) { writeAnnotationsToGTF <- function(annotation, file, geneIDs = NULL, outputExtendedAnno = TRUE, outputAll = TRUE, outputBambuModels = TRUE, outputNovelOnly = TRUE){ if(outputExtendedAnno){ - writeToGTF(annotation, paste0(file, "_extendedAnnotations"), geneIDs) + writeToGTF(annotation, paste0(file, "_extendedAnnotations.gtf"), geneIDs) } if(outputAll){ annotationAll = setNDR(annotation, 1) if(length(annotationAll) == length(annotation)) message("The current NDR threshold already outputs all transcript models. This may result in reduced precision for th extendedAnnotations and supportedTranscriptModels gtfs") - writeToGTF(annotationAll, paste0(file, "_allTranscriptModels"), geneIDs) + writeToGTF(annotationAll, paste0(file, "_allTranscriptModels.gtf"), geneIDs) } #todo - have this write bambu start and ends for annotated transcripts if(outputBambuModels){ annotationBambu = annotation[!is.na(mcols(annotation)$readCount)] - writeToGTF(annotationBambu, paste0(file, "_supportedTranscriptModels"), geneIDs) + writeToGTF(annotationBambu, paste0(file, "_supportedTranscriptModels.gtf"), geneIDs) } if(outputNovelOnly){ annotationNovel = annotation[mcols(annotation)$novelTranscript] - writeToGTF(annotationBambu, paste0(file, "_novelTranscripts"), geneIDs) + writeToGTF(annotationBambu, paste0(file, "_novelTranscripts.gtf"), geneIDs) } } From 51f382eec0457826dbeeafa4575c9728128acb4e Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 28 Oct 2024 13:49:25 +0800 Subject: [PATCH 139/189] Add the flags in writeBambuOutput to control which gtfs are written --- R/readWrite.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/readWrite.R b/R/readWrite.R index 81dfa80e..711221d6 100644 --- a/R/readWrite.R +++ b/R/readWrite.R @@ -30,8 +30,8 @@ writeBambuOutput <- function(se, path, prefix = "", outputExtendedAnno = TRUE, transcript_gtffn <- paste(outdir, prefix, "extended_annotations", sep = "") gtf <- writeAnnotationsToGTF(annotation = transcript_grList, - file = transcript_gtffn, outputExtendedAnno = TRUE, - outputAll = TRUE, outputBambuModels = TRUE, outputNovelOnly = TRUE) + file = transcript_gtffn, outputExtendedAnno = outputExtendedAnno, + outputAll = outputAll, outputBambuModels = outputBambuModels, outputNovelOnly = outputNovelOnly) utils::write.table(colData(se), file = paste0(outdir, "/", prefix, "sampleData.tsv"), sep = "\t", quote = FALSE, row.names = FALSE, col.names = TRUE) From d10f86a642027085c414f75d697b50905b873242 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 28 Oct 2024 17:05:48 +0800 Subject: [PATCH 140/189] Update release history --- README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/README.md b/README.md index c0aa3cd0..258f4970 100755 --- a/README.md +++ b/README.md @@ -549,6 +549,30 @@ warnings - A list containing the warnings produced by each sample **bambu v3.3.0** +Release date: 2024-October-28 + +- Subset transcripts and those above the NDR threshold are placed into the metadata of the annotations in $subsetTranscripts and $lowConfidenceTranscripts respectively (when filtered out by default). +- adds the setNDR function +- outputs the NDR, txScore and txScore.noFit as attributes to the gtf file and these are also read in with prepareAnnotations. +- Added setNDR as part of quant, which means that users can provide their extendedAnnotations alongside an NDR threshold when running bambu and it will automatically adjust the NDR used for quant. This means users do not need to manually filter the NDR value themselves. +- NDR and other stats are now copied over to equal transcripts even if above the NDR threshold (previously only happened for those below the NDR threshold) +- Read class to transcript assignment is now its own step instead of being done with quant. This is turned on and off with assignDist. +- Added demultiplexed argument +- Added spatial argument +- Added sampleNames argument +- Added cleanReads argument +- Added dedupUMI argument +- Added clsuters argument +- Updated lowMemory. The previous lowMemory mode is now always on. The new lowMemory mode is the current implementation, otherwise it will read in all bam files and process them together. +- Added importBambuResults +- writeBambuOutput now outputs all information needed to import Bambu results from text files +- Count outputs are all now in sparse matrix format + +Minor changes: +- Warnings will no longer occur if there are seqlevels in the readGrgList that are not in the annotations or genome. This was done by setting seqlevels of the reads to only those in the reads. Warning was constantly occuring because all the scaffolds used in alignment were in the bam files, even if no reads from these scaffolds existed. + +**bambu v3.2.6** + Release date: 2023-October-25 Minor changes: From 38cb0527f7a9076f9bf716e2c1991edeaae23385 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 29 Oct 2024 13:44:25 +0800 Subject: [PATCH 141/189] Update xgboost models and include code to redo it --- R/bambu-extendAnnotations-utilityCombine.R | 2 - ...processReads_utilityCreateJunctionTables.R | 4 +- ...cessReads_utilityJunctionErrorCorrection.R | 3 +- R/sysdata.rda | Bin 316013 -> 304427 bytes data-raw/DATASET.R | 25 +++++------- data-raw/update_xgboost_models.R | 36 ++++++++++++++++++ inst/extdata/defaultModels.rds | Bin 603 -> 2391 bytes inst/extdata/read_class_ME.model | Bin 171386 -> 175994 bytes inst/extdata/read_class_SE.model | Bin 157274 -> 156482 bytes .../extdata/spliceSitePredictionEnd.end.model | Bin 0 -> 109970 bytes .../spliceSitePredictionEnd.start.model | Bin 0 -> 113786 bytes .../spliceSitePredictionStart.end.model | Bin 0 -> 111626 bytes .../spliceSitePredictionStart.start.model | Bin 0 -> 100898 bytes inst/extdata/standardJunctionModels_temp.txt | Bin 204774 -> 0 bytes 14 files changed, 49 insertions(+), 21 deletions(-) create mode 100644 data-raw/update_xgboost_models.R create mode 100644 inst/extdata/spliceSitePredictionEnd.end.model create mode 100644 inst/extdata/spliceSitePredictionEnd.start.model create mode 100644 inst/extdata/spliceSitePredictionStart.end.model create mode 100644 inst/extdata/spliceSitePredictionStart.start.model delete mode 100644 inst/extdata/standardJunctionModels_temp.txt diff --git a/R/bambu-extendAnnotations-utilityCombine.R b/R/bambu-extendAnnotations-utilityCombine.R index 1bb7b8c8..dc58b69e 100644 --- a/R/bambu-extendAnnotations-utilityCombine.R +++ b/R/bambu-extendAnnotations-utilityCombine.R @@ -14,12 +14,10 @@ isore.combineTranscriptCandidates <- function(readClassList, stranded, ## stranded used for unspliced reduce min.readCount , min.readFractionByGene, min.txScore.multiExon, min.txScore.singleExon, bpParameters ,verbose){ - message("starting combineSplicedTranscriptModels") combinedSplicedTranscripts <- combineSplicedTranscriptModels(readClassList, bpParameters, min.readCount, min.readFractionByGene, min.txScore.multiExon, min.txScore.singleExon, verbose) %>% data.table() - message("finished combineSplicedTranscriptModels") combinedSplicedTranscripts[,confidenceType := "highConfidenceJunctionReads"] if (min.txScore.singleExon < 1) {return(combinedSplicedTranscripts)} combinedUnsplicedTranscripts <- diff --git a/R/bambu-processReads_utilityCreateJunctionTables.R b/R/bambu-processReads_utilityCreateJunctionTables.R index 1c3b4dd0..44fefe69 100644 --- a/R/bambu-processReads_utilityCreateJunctionTables.R +++ b/R/bambu-processReads_utilityCreateJunctionTables.R @@ -9,7 +9,7 @@ #' @importFrom dplyr tibble %>% mutate select #' @noRd isore.constructJunctionTables <- function(unlisted_junctions, annotations, - genomeSequence, stranded = FALSE, verbose = FALSE) { + genomeSequence, stranded = FALSE, verbose = FALSE, returnModel = FALSE) { start.ptm <- proc.time() if(length(unlisted_junctions)==0) return(NULL) #summarise junction counts and strand for all reads @@ -35,7 +35,7 @@ isore.constructJunctionTables <- function(unlisted_junctions, annotations, junctionEndName, startScore, endScore, id, annotatedJunction, annotatedStart, annotatedEnd) # correct junction coordinates using logistic regression classifier - uniqueJunctions <- junctionErrorCorrection(uniqueJunctions, verbose) + uniqueJunctions <- junctionErrorCorrection(uniqueJunctions, verbose, returnModel) return(uniqueJunctions) } diff --git a/R/bambu-processReads_utilityJunctionErrorCorrection.R b/R/bambu-processReads_utilityJunctionErrorCorrection.R index c2683cdc..9b09b50c 100644 --- a/R/bambu-processReads_utilityJunctionErrorCorrection.R +++ b/R/bambu-processReads_utilityJunctionErrorCorrection.R @@ -2,7 +2,7 @@ #' @param uniqueJunctions uniqueJunctions #' @param verbose verbose #' @noRd -junctionErrorCorrection <- function(uniqueJunctions, verbose) { +junctionErrorCorrection <- function(uniqueJunctions, verbose, returnModel = TRUE) { start.ptm <- proc.time() if (sum(uniqueJunctions$annotatedJunction) > 5000 & sum(!uniqueJunctions$annotatedJunction) > 4000) { @@ -37,6 +37,7 @@ junctionErrorCorrection <- function(uniqueJunctions, verbose) { if (verbose) message("Finished correcting junction based on set of high confidence ", "junctions in ", round((end.ptm - start.ptm)[3] / 60, 1), " mins.") + if(returnModel) {metadata(uniqueJunctions)$junctionModel = junctionModel} return(uniqueJunctions) } diff --git a/R/sysdata.rda b/R/sysdata.rda index 1cbb949f7cb7814c3546b6b1fe22ba77e266b0bb..687f76bdede24705258d7595080b4557aba07d57 100755 GIT binary patch literal 304427 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%0DL=O!1gE!G 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�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%0AG;Ce`MJ5-Of<;G)wZa+1o|&E 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�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 EKoqAe;Q#;t literal 316013 zcmb5VcU%)o7&aO}2rU#rq=w!Uklx|Y1r(%9Ks?kK2noG|(tB^xrPss*1VTpyr6x)Z zC4}CjBT}sAa_)D(a{s!&JAdr%%+5UT?#}MK&%Dp9jvY)zMjIkx32EW{Zgi`R?A5>j zUumovj=!#8wt_x;2aZImhlK5>Uv*vKPyY5+T=@yU zBA(C%scn(Am+OK84*gC#cukMjRfsV?s&Xg|(&v7)lk^{@hu7!*5fPI|$3MMd75YhB zua__SkfI^SHpk~jUwTj%m4Ht)72cx zE>AjEBj5u7K*Z_Q0(DrZ=9SvYs%F1W4=Lg*;=-}#Ip!o{H*aP6$7irp73p9*tS-D| znr6#Cw!mjrGr001PBeLUZ+WHBQNcy%K@}5L2!>6oT_8lA@Wf-dM`mOpL zlftlf`+I#cM_=_oUTUXYo?9ZaHxlm+d^^5$jl)|v zHdfhTAlXLx=H}E;PJ1^?s2wT2n=6PjTdLhcqbYcUqZA2k*|`P-)8dHa+VdGT z;_W#TNBP>+@1!}7F7GeMqx)$oTnI#2&|(kK0JqqLPsbL^O7Qr#DBNE8hS)9bY4Myr zg1ccUKGpG9iz_rKq^vwE2RBBOj{CAL2qdIUm;&K)UhnPEXdRm1anW60TB>rmOyZcs zF3p(0a>VT9#f?Dn3q;O#8^V%xyIbp!HFb`?oxKgDsLdYkUM%l{_uTHWnlVB&nxkux z#23C!&{2!_uZl@h9)#c?MSGneIp7c4MH6z}LhCV;3 z3nP6Co6%6=H9dJsa~RfJobvp~S5z!xM(x_qjOUCrnml{n!Q!{ngKEDit(??exXjCO zmHZqk?betbz6u+^iU(o7^cUR4%`aV?s3t!Do1*tkSa<1JSs&?hT|n?IZaCBClUDV7?aSG+OQ5!&6`h+t8x7*qR!#K`}jE2E3EtLi6drNCG2o>EUZPm*^KndQ$o#9Kb2KGO{?Y9;OnZ3I18U zosiZ@BH65mA0C7}bAgbSOoKpO6R-P&!xo&*)ld@OSM685M?Rf69BPn|`-ru_10pW3 zf376^jC=W2`E=jK2rllY#kVdWdxs{ywLA%nNOYRMOu@FN{7FM_2g-cf2!*1 zu2Vl|JLm4(KTcUWZanWvo)A%6`ARwl`z(WxDvp_?J~efZNHRvTi#`cRh}b4^^_|>b zz9K&aZ+2Kp9t5QXm>hozzEtT6c+~mHq%}1xJrJ25dN$+qcK-?-MvP||S~ht!srnP^H?5| z#x5$&hgfS@*XuN25dfL*bLrjf$av9RrWSB~xS0|5nLEwP<~H2}pMYbHtz)H-Rq%Wa zCFaY>3&Jp0Q*Yn$aZqjOmF+=7So)6KKR(Cr8DDgSz5jH~h zkPZ*&yXUn93PG{}4?aszGA)3a7?<=-=aALL#@*2Zh>0}dnR{Ecg& z)`?E8(&7{Ykm;M1(*kH=0NT8>zSZ#42R_(`LH~pv1eN)!F;Kt2tbkW8uX_IR3hn4C zyDIJMdeITG`%G5S)>$pVE95A{*G1#_e57wT?}5~2nH>0iN6(XB($WDHO_z*X&rFY| zeO&BM1}+}r0cndA^vt%1REJnRk?1H>-|l+5-rB}e&>nM3vJ|P7e!SDeE*h|mm?u z`O?8_ACe4-u<7pNsjOIZ{7kO%SPs+_#57HML0E1VnXfMmrP6DJ>|XH92D` zOJO3kvBL`v^c4v9n+-A-J{);YH#kSjQTybA=l3@vDr)sV}K z`U}ks5PJExMi;xHKGYF0O4QNV;9_o!>LrGu;+Q9pY#IrpLVtatzV0eB{^>v4@!qfe z&26u*FWbE{#fu-LvxNM+5ngAo-BCkiN5xuvEJS=vku4q5Uj&=(JuEm6nR?W1;Amg| zU;}qJ^Y!7=?$b`B4h61FCU%MF2Y0h1`!hmx77x_CUx#|QJ0>jANC&KrZJQ0H=*{ad zv8wr-JQ{QU8qc1w#Y$&sP01iPP2PL5pighUsFY}b*E*!UbB21R<9;}&Rr~$k*hO+} zr?5_|^URIE*{Gd~Y44@isxjO-zp@t76KG6LeoPyyh9M$(gAaERvC2WRbM?ce+ILu5 zLs$YSO;fSGNp)LZmC=K(23!u{0^%QKLo3uO3sbPE{rSd6W|@F~_eQxAp>aC!&Cz{3tM-^)GM z|EsvjH-ZSwxLAe$2Y)!VR({KT0?)IKn2WwrhT!0F-UgQ?y&$d~VjOqIP@%=cN#~mVP&w)+U58OwS)4Nm%ac2q+X6S&YFMOk)D=6Q=aA9PgJYh2(ZGp+dGC64wLaZ4m5vo~zje#>p`ZNow^tnkFeCB^3Pqp~ z&gF|&XWtjF{6Yu3?gcuPCQ^)?jGiChob*M0ft;DyU-z6|+LZFW)3?V1O| z(snH}I)AM1`5TgL=`+*E+`eP1XWWox!HNd)Cvt=CNZzq#nlf~k7qIG$U-~ds4O0Z= z(x^1G36mxFsMjO(7|0LdC23OBhvyE7D%Rs8V7y%aiApJ}6>m9O8#tJx60T6gYMNd93n&<~=9yE~} zJHA52EB(Mrc^;t}u6~WH*Zww5m3s+WQWW8vg8n9Y7Q;aXP);1a;|Oi~u~KGyY*iIT zaD+O05f1ba?+mmJ4iwSN(sTWU#uAARmcpV{G_nJU|3OHRNJ9~vT%Gb*@4S0?G;DL& z!Q3%*G!!_MZ`VOQaVqBW^noo-L*mTeH41pb-QV4{BXFSm7Ey(?&4=u`k1GH5d4C<#HMDg`0f z#XRg=2M!EsJBxD|Gt|){T|s4yPM|is5x{8a*6nIi3poRJGsRnRP3;LHjLtG zF+A}1Psm#ty_t8A?ztjD+fFmCd3`7li&}>^D4ncgZ)~^SToo3pfKIbJf5>$ImB~EJND1`e4iDWVd~Gr)?bspOZ`vHL0VvQ*c-r#wk>)2R(Og*OTb6}@$f8?O zT22OcSS^p&wHRpyVgY43cX+;#*NZCs7||^OX7XA{uc7z>149D;rUTZbK}hcRS-C&Y zvOduKm2CDt>i1Nnw_^~!^njz9b3DB)Wt)KGfb^hH-Oj+;+o9yLlq<3eigIosFp(#A zkzpb1$u0Y!GH!WRc7dr3Dt0Gk0A#=C)zE`5w2#K~JbbNGKH>`bT>f7{o0N~9a&}ag z_V2w;8~L0foA}Agh#ws8r+cM42C@}8zEX{?(4ZBP#m*VHr4%u4mr3=&+s$erE4w48TrAimeM`)g$C z317L^E>5V@Gk0L(#l2?9{uh(YpB=Ov|9bpvJl`UF7IiTvCUoNIt8dI)Iw_fC0el_V zJ=!lj`uO0kL&f2<2X9Mxj=wqi{E?t}^laAJG^fUSNvw`{df4Bf<1t`EPhI!{T#>3o zOwV7SN^?GhHCopmz3bFvY;q@k?|V)*z~}W`<|v0w?XM+wZbIYpR8>swfZzaCFV#vA z=uRcG3Ewv646Q$B~^01uk%Q;}VihOh`o-@7^5a+~O9WBP1H+CZf)H+= zQ~AxS*kwiRh;^I2Q{$Ws0y))!hI;%w`Q_9>J#36v%yUBxgMN(YBe>znp&+(RA0$y} z7~_)RIqT}yEmM%jZfXNP&_|6cwsX$qry$Z0@02_OiV^WkF?JK4iVH;ZZoCagAsU0Y zcDl``1Bj;H9i--8i&XVFwe|4oO6u&NDf#D8{_gXkn6*Cv@4(Y_e;<75A4-cwU+uPu zwVfM>eF&>lr-ur~n2WZ)cq(Sm`S?xhD}!ynH$0)nztiRW8!@8voOJYx{Vfk>K$CMb5q2iu0gE@`X` z!96?t{FI=F1ZNL9!CQsdG}Ta#C#>!?^2*auuJ>d$PDL+#&TBVkP& zwb(EDi08Sn4rm3Bi$um};? zM5C(j^6%7h^%iS=i%>}legc2 zR;)H6{Br(jzrQln4II5ZXc|2)|B?*deE6#(()7P|l{<`@D#^eah}PM&6UGXjl@^8}owCPgyJ@GdEVud( zTKAu=Xz{L66h@cIy{R+)W302Qd;IU~!|(?iA-oAc{vvz{?9+_O+EY2v=J;NnJ3yoF zM7Qmx|A$&zSBEM37bCqMi}Ao4kL-ffY+#49Xz{-f%=ceTbZ_lBux~y*9yI&B`|;JA ztv^bBt-$Z&z-tK}KDSqx(}>L<{a&ZNfhUJwN@nWrChdr?Mv1*_)q44A>hvU#_qWcQ zz1X^t>%W!G`!`A7ei!$gs*nt5cf>ceBEwqZzWh#@_6pP`=0?6!=XetM>+_S#ziKXd z9?<=K$2D`Ja_P1VU+Vhuor2<8~*L)=dJ3ivm`|DqxyICRI&iVS%nfg;Ni%@X(2lz^!9flsa zkTHA5NS3YfM!}Q(W{X-zbSRstQQq_Rmpm8OZOq*?V-)c$KD>@0K`72SmX9Fq6zs|K z9m^$z#Ft8WL*-8%eqkD5d-o%#3_~=#nH=O(heT~MSV75Y%KCe$mm8xOy%2R2YYy#P zu(w6rFexbLZ;CB*btg)}v)@`(Fs{s>a7>26ZkJK8FF?UuhZ zC{$(dp-8kzv1z{yRcLX^H=XlJ^P2mni$&spUO?TaI0{@WiwK;GvP1+Tt8xk@G1&2i za8$Z%k4(eJ3BK&aD8HCNZmg$u|3Lrb#G%%d|4L>Q(@=WIV|pGp^aM`3?ot zcOaS|mOT_E#n`!aBni#r=^+p0Y(k_%iEw%n=R5;nAgQ}$y~J*C&AKq2s~zoRyETOx zQs_a%Knm%)Ws~s3!$gA?LJ9?J|s3OTV)#R^*1l3{Pp5dDc*J^LS}hxGPr$Q7#a}zhiLJLPFv_QlZ5!)9wxj zzB^d$nIHZ!FOvGYqfA-J-gonDyhi|*%HX)8a;pEja^=ZKALs!?Ka~m4@}(%kwFkl% z6|us%F3*`+t!4|D<$?(48O!mxI+o3WNIbWPI8{w^bK@_XjG#rCdJb7FB6`eHR&(Oh z?^`T)#B+&Ou{N_$3}vZM5@&VNW~?XYhIshM(^wtvo9ZV|eGZutOYaX|1h# zojAo6QQO}C>p7Qqnh9T)wB=6RQ-}$naT92E{?$qTHZJMbZ(pmVcqR;`{N!!+N06w6 zF~(6#GNyqECqdcf*4j|}&&KpRoMxHf+4_Y=pK2F86mjCXP9#3eVDo9x0!AG<+==Q5 zp6f=S4VuieW{wm|J!+Ec*cNn0VZ+(K4-=6@`uYh`B{&GO>F)}DD*N{Ss|=#K-Fm4f z;g`cGf28m|yIj^tn1EhhQ5@PyQO8_3u#nEd?{+TWv2<)UJ@Y&MClK~QbA{y0yzFrg z(+H2lXRdmBL$X?8K_#ICBGlFZj@>z4o?%`dHatEFzv~-V%G1eB(G&UQ@0hL7rJuz9 zoKp3GfoPoh%OF-jwRWZ&@?-ohv2_IdHSD7A zP%7e*^cl1>PtiKnsLFxO9^y-OA8#+h&H6y=JTTH&T*~kc+6@c0=IW79Y)Dj0YcE25 z#5*OlLJ9LvKCF)oOhn|cxs-&=fGA>fKd!qdIi=hD8WlLpUlJpZ9#y5N5YnIh8`v51 zY#DC_<75Ss>0`2o;7T4O>^#u>h2M}*i#?LyO>F9T4hqs5s%syL>T3FM!1%!D>RIja zoq%&YJSluhnGHE#=_*Tot%zkfPj77+#XDM3;D{bt0#{aU{3+-(Kwqd$;x~$vPJa z65PgS5nAe2jCsJ~){=f;hr7&Nt#S$Io@eurXFFnp-y>`yxS#XdRd(3gSIM9FDPY+M z2@q&2qy(>*=|YKS36aCN1jQ4HT}_Wl*gJAITtuEP1T zFyrI5@A4v=|CxX9@5jTjyyzd$wR`lGB4mE|xViOo(FB&hswaZAnpf7~9CxksY&8_C z6sEeJ?v^)7ck4h9-2aKm4`cH)YU*zqbz@d4ILId1*jKzsFCocneU!R$oFd4eez38* z`I}sh&x8B2pbV{6W;TFn4bw+f3--i?_En?!r1=o0Sz!G~T!sIf{fWuD>@N+2Il)Jp zE_Naxsi;^AzQwQPE=>N49W5$&U^FmTCnMzuLmVGJ4H1{^k4(X9XoyeM*4owYPMK6y zJ{~eFYG}H@pKOWi1Bg5+4tx{dFD5eOgS9L7r=m`#kPW^KZf(CnQ;RScGWk9(siJAE z9_1dxUqcUN3BUZ02RhhW-o{hd=3`#M1MN?z{L5DesVeGT@x8Co&z>oFzI~B7>0z4g zsP`VIR#T#Ek5b<8dI{s@b$+!rq@lQxQA&W?5GSd zK14$=J^;*M0`t@V{h|yx@<2KQb{tVg7Rs-rtdzm@?csGoHN#od0&fvd)DGh~14YF$ zBR@stg`T?fAL@i~RbCGu2{@Wz1~%UWW;%isRl$*m%4!UZOef%hAV&7{5#Z9uM@Fj< z#kW~2PoC{8+*x>`i~bA<6*DW zyOm89X^<()oh4$M%fR9NX~duw)I6T!HHuek^d*T{JvOs^S5pY96i201Sy}RnV91@- z>y+#^KfP_m4WtLLr9C6w`r&4wnHVdU=gy|>6a^$x?a2m3p7c%~CgdKerJtA1iS3^M zD3U{#HBZ&gnWk`%;@wkmM>whAZ%UpBt~UEi>{Q2{JS?JdlvHqxQ$#f@qkqVb;V}|2 z&CNvFRj;Y;Qpd&kUxa3qi$p8_l9L2&uR?U#*Dl=j`0oxc{P6k9r9qofPzqnpRuxnq!Mj1mOZ+PaP+IC{;*@8O|1IHzoD zDO_MGUZudi5b~*Ap?3&jjK(*w*qC0eviY+NmfbPLY-{&^Vy;8Xd4cF zkbsq2j3ShZO}l?00E<$@O{ui^AWAtpp19ci@y)q7O?7)x(OTNg~;N znI`h}(?&EtHB`;H4F;KwG}1E)O!6&8=Iwm5c?zyZP#%OW@Hx41V{-I)BfMyDRX)-+ zFcW5E+9WMkip1Y&;DZDwQ(FWTTK#vM4Yniz_?I1FsZKUoPEaI)LTq?YX6OU-ISZ(2 z!d`W=ZEs@iK>3Vl;4x>~an}Zfy&ohs)Z{5W+Kj=*Si>Jcr)nGT<2g!J9~4D@wYjU+ zBD+zlWifYJ04yeuwd2O8;4j<#PDh-+e(!=ifS{Xj1+@3VQjD!rJrU8KVQJSM>%@vj zPC7Li#F`VD0V4{i81v%x`UD3EI6Dt3 z+d16wiZ9;Tb0$FY>j{gM&a({Gt<+e1cU^lFInHDOIeH(FB8$EWT^=p|xB1?mxP&9z z1jz_k7f8{vQ&Fl%v`E9C%p*g{twPl8_qUV81q6*}+Y2cxZsiz`Y{F$)Y+TN&WsYc` zQ!bE?tkcmMOPjh>sk?}&v7KM`i1!|bT`xcqJZsw?x>mB---DNc)7)gu6(K^b=C@;L z9?G$8QAP)`jr=1Q%l^G7VjytN`N{1#vOGcS%G;&p3La;3ZVcR!4byJL-3kVGtm6`z zxQmm8$s<7-QAv8X?^SbkS?_cH{7rI}xcQUU1Oq0vj z#b-0keg-?xzoDTGVP`ZV+i+7~W~`;MoYX3RHLhhcUCgi`nv^>^Mqd&G;ObbII&@Oq zlsb#g{Of`D#)HYBW?8|lf2MQx*MZAIps}OH^CjS|UWZKCz}sfP+Q~KPzh1;78x6^j z^R`6#++E*d6s3mgSjLjYcn|2_S`Q(M^sg>UaP;s4&~HI0 z1~eYVr)kS=t(^V*n)2f1akOa4gP<%6D)Ovbw((+4j`6})Orxwd7D6>Tj#Pp}m8MA% zqAx=>`_KB}c>f`C`_YkPW*Kgt=urztK zD9yY{kWWp}(VjcVIY7V46)QhIZ#@1ThkC>68u+0ySf0 zh9o{Tr*Yg2Bk7TLb7MtwNCE`5jzA6G#JHE_;hqW}iv+lA2NdlFMPrHfH8Vr>vPAQu zQnn5|**Uh>;EO!$d$jG1PmL*ty4u>XAPMl7B1r7)T)ZjVPN9Hv4$anHC8q>e98o$j zz~VV^LpJ3pkUM*FAjCTb)~R+x{IKHz1dAnLC5Ui&s~z*gB0P|7(PLc6hjYqf9MlT( z+Q4_%L%$Gyd(5?YRGHXz?OrqzZY-jTRvYmsMM(ohF&Cn!iGqAccCKO$3q#uTIu)LV-zM{HK4E^m1eLQH>6|$wIj$wTgE43h|;w| z_FRa?rBN;~E^ z9{`#y4ZZY<%S#d8yox{!X*a+H`;zkHq$DJ0zAfs=(5)VN0hXZ;4=7YH#^b34!Dcm^mdhbQwTPV%@Kj- ztQ_7Tc(*ROPTWKHff0j4amA+-!mDTxqAqGk{DLE{$1wm+P|dK$wnr{2MDCNE;_Yzg zpKxhkE08g>42_OioP3)gld$+LaU}s}V|U1J~MXnxFbJ z!<9GU)88l+Xe37`)68VvF$S1+QQu-pWExebC*#Y$#U#Kg7Ar(eW}M8LEW^hlP{Aa2 zd$2_yDu%qV7%-!~F_U1SFta&@oho!PV1+Ki?eZI{vl}gMf6Puyq7iV8%6_7LRxkEg zyWmkOg?sF!8vNy9(<^XV8*)yGB9I8h%7;1hxCnYqd*RV)b_7+N(kUKI#CT31F6~na zyW|jDFp!ehAMzIRs8;gfa$EkYaknnZ7%%-0*5%W$A=JMgxbMfs@ z-6ycaPS~S%HcUV~Y$DL9Jq~)rNmN3PVTm`-eQ82cRgRGcfgO%4wnRIBAymoRKt1GS zYn9*z*u=E&MM?&396VS|L`!=yOD+NpMI{qu@qIG}2lnme{df%bkUw%sN)mdIj3>;( z4FUl~AM;KWLD9YyXN>>-7E6kQve^*4a0^@ORfsld30k@x^*VcwGTX#GQMf$XYEVv2 zfJ`KE(C%5b8I23sKi;NkNW6`!)QzsEN)_o1=3lwznrktc%NorL5}IO_d`F*rud-x< zF=(<@Tid!K!F%WXI`+Bl%iqKnW-f;XMo^d1UAA-2D~+E%%tMe~rqxox*9KXfWU8`x zGKQ?FhPn53pw99_+T6Fo1G7NJK4;WHI=#TwLzS53OR3H&usf|zV>5S_xv=z=16|Iu zu2JMJ7n105GdQY2y|9UByD2OY>V}3Cz~v$NM>hmOv3?cn2PFM^!a=Vo^Zp4C&wp|I z_LJ;f4?7b|3U(Zez4qfr^vf{Gu#Hm!X+3jghgu)LxCOMfAOD>C8cA6E-N7T_h@Uj6O#Y zLq zqEUafkK{E!jakaj0*?aM9%h-Y0lUGCr3z}4D*GXAjMOFWhe;?xjV3iR@_Wl!43W=2 z>RO(WPknu#agbqsH?{5=dzcwgs`=Uqlu$!#*m^k4s2))gUat8#SbWBEG(%ap*|G&3 z8kjU^I;Bd}A)_id%owa;wNsmbH3}2jtAmx6A2MpF>FqLVsA|a#aEuP@IfhD0ORJJ) zv-1cze)$W6ktlCD^~yC0yz}fl%kB0#GRVGpOJPxa)^ySm$E`h}%JcOfy=P|9)J#Gu z|Mk`J_SUubHJn}pqb2_44Hy;DFIk=l#bh%bLHqLXjtg-sZsolt?j;S9Nj zscgTb-q&U7Y!4dW8JG?eb-s+JETr$_6j)|i6$lKE6Ed_ywvfjr!Y23?RCCN?Pzu$f zV}pkI36@zVtox0lkEBOU;&tJc<|>8ShOiehcOZ`Bl%cX{F=6Qes)PFlP)I?Pjz^V~ zX{WN_3imITRJToD81Gx2U(wW}awz&p7jk7^igK_}xtR0a!l|vUU&jRrx`?+Sc|9ri zh|W+gRYHRIfm&oRMdDz&&j8gPY|I$uPv6B*4dW5iqTRc*o#(DC9uH9QM04ar`OJ#y zr$wc~5_jv~heTdRo+nhz@6i5ZWSI+g_8^bvkI3}zyesrHl;CS*n@BKC7-(1myUp%-qM-7=ReqsW?#QQ%)^$47rsbt}DN2y}PWFJS$%2L);$qW~1 z)$vtPSJbA^w~ok>3(5ms@VxYz+`6s*N|BfQkUd~dWE30iPB%2xm0DAaTIP`k2W#+8 zo>lJO77_lUd|T{cXmJ>rZ2*C5}HzT__BWy;AplOgsY-n?8kKURr3<@#js z;7&)fCiRlap4a8pP6?hkLsU_A{1x)vQ z*VG(i(Bl3qPKiRi9yjFgZuW$lUcC8YTTDO)nk&X0TN$T%n}hn!M-hEWPTb=mT9{qA zJp7+3cXv8ZhxU}bqPfn8k>6K7cmtmr^7yT7XfJCB2Vbz<(SGKay>&{q$0+udVnh2v z>q09io$(%5IZRwc;C`|%b#k<^RJyA?XOXYC7%KIiC+oPXVD~(W$q{ zKDcIp9jB*EC`yydd_imKYd&AS*`*n#c)OCqcIbkz+STJtmA|PhCJN&zbQX!@4h7` z!zpnYev_lhPlj=y>Ylg^@DhNl4=bfLni&&--BiF#FvYR%#SMf1hmwvdHz|`}J6pj@ z^4Yn5_2C*}iJ;GkQ;fMMFg6jnc&9y^gQKtloBja-YTHOwi&K?u<9{@jJ63JXJW3y# zT+*X5Dz7^NaGms^7mPq7+iFu3&^EO(mJLef!LQUcg+eR2812*OACs-^rx{6~=a9!mdKKJ}qtp!(g(_5uq0&?)RON&8c(iyW994O z@oJKR!P|)yr@M*lPk_7WnG8dpc?Br&49W_W8tmM;i3G=Q)nhg8?&Sh7Sbc)MGY7LU z*8j>8!O9AC+|F~YwRS7y8U|;s(U#J%I8wY3Gn-7%QOp~IQANi=v4p62vgj&CdH* z%var|^nr_!oFuJzs3@n8>9iiDO5s?6xjt1@r2CSDjs zWnk4^=6Jy9!+|H&UlkFv^tsJcTKj?z8#!+$TaDftJB1{3rlwU_6Q$`1tO&AVDCZC) ze$CW-h+$bdvkZ28@Fh&^@$5VCvA0kqot$M(iB~}+Yvy+mCL<$kx5D$K$;&>scD}J{&{~8Gs`ntlEgnRms*$q z+yScN+J$z%Z=?4xnE{qyrabbI3TO-N)JXhZu?=1W^Pf4!YM7r^F)9ZqV0b8Iv<@9f z0WzD_bYgo9CM)D9My%3l>= z;KkytN$+1#b4=mQwdpK2LC23#u9j|BKMe&8?T>VDgRjBb6s5PcPDO_{t zQANgMAS1LJx!$L4mD*&*91)L-QHk-Ji63o)0C)34DV1BV<=!M7c*1+9DcQ^6M?%E!G~dECtjCc0JAVDmMNW=&XF#s$N` zwN}_T$u*k7bv%yd{M4h<1Egv*4Ua<*BU)9Kp9jRq99?RWvT1}fc|zG!n7 zY~6N{8et|ZOm0O%TxBGfcAQnn@|QkvTD&&<5af8mh@es)27YFg56gT73m)>;@Y$M` zza#r~*vgNe;hiI+UKsP23@zYb%oI1XO8te3+&$$Q*`rOqN`CPq@wAqp!R-c^>_b6` z_!!|aP>oXR{?c9ssDnCcM>~>U<+MeD#a~V=I=)zy9U3FbUol};TcJQ>V#b=Mb0EWM z98jR7>p9b9nHzqihWQrrh=u~GpNo+!x?H~{M1D656&%)}uFb6xr-gYWSHp~1s<`VvyD!Ew0< zS~}_l?B>1A_>JnD!{~|DI^9PutG5OZ<#pdNZQsoI$rvRxI6P9NXr#xVOHBHF(8Hk=e;%_Q!II{P+Vtox)-Ca`#~e~H?=p5Z>f~f zjm7c*EPe(j4xBNTbA!F56WC)JwH%+K7-BaviKWq&*E}Qnq{qg8X z^l0J>exQUCtwo$LnPHbQMDc|VcVvYzcS<<}XXG9PnRAc9c1)c~UF$_UPuBcH#G^su zDp9q^v-=P4Q4CQ`GM(yDtVNv-O{r)%!t6pJk!J?F^`l}IF*dpesCuq{3J3f|y7M3P zD-8tm1w~3oryn~36{X|Eb+RL?pOr`y%QZ1*nbk1pbCAupEG#I>mmcQ`4@$PSGZaPFGf+%_ z0suTkWntom*~x76?mF4=xz#GouJKTQTSz>$jZwZ0)I{Iz?@Q1u&qPST*O=+&ncta0 z2EI~E12-RjV3ZC{DAOp{00c_$*VKkws|cAsd>#Pi2;)x$0(-%omx99y;_@vNlQGJU zJC1I0TCRn{!W2Q9@!Hx=!eWO0(aj|}+QxdhX6?Ghthw?v{J0oC*)iHdoU~5s<5rBU z$GvGFHX~4@VRr;|svCNjtfn@&+1IcnJ(aU};X3L>`*iJ$Q8{Xr!&OD$b6NaCRD0%P ziV=iis)0Mlu36P_7)~#ihF+Vje_u6EgyWApxDEF%@mw4Oz}bbCv2m{W*H~Tq%!GhhFEaP&gCq~5uV_a zrCn2DkdSE#|DpwoDV#{&qB7CTWiT+@&US4h%bcFdbQK25ni!uWYVM`kJH=NnXZT95 zrBY=QZ3|i1A7#7ss7WP$%`gP!g5}FMl4S+Vc1#~Jsq)Qkbw^33NJ85STt#jo&PAhR zJL%t;w=5v*j~a=M)C2h9`7%VyNqDX!y9HExy5qt zt*z{imYa5iTCC|Ihu#M7Ee6`P!#j_e~f2u@)W z%q%!mXf1NpuOG=I{SWkynZjq0djaOGHaFnie$uiG2{B;6*MTFt33(7D6-3}#Y<6j& z?g1NLH!!hbv(-}co^CdaaCL!+Q8ufExm88J39EctI#dKhS6KXJ9Q-7eXaA^kqg2<( z>Nz~aiiiJzF&zv$tM{GAwqT93(90EU9(1*I78^LrQ_nYc-8S?YbZyI_X^_=PHWsU( zZ-rIVRQt&&6g*pA?jwx4RE6(z8dvUk&jHngsWVT5w^Vvsb1Yn4RSH-qEktx&?`T1r zXE||IzG55P7Ayj1!-n##HIn?996;7B3udy00L7L?^~keBkZ(VCMV5uPcv0ovbU%b#YZPZ-N>f7eOUy)8vHK|iT{bQKu^gx1aqjk0k~M94*x6T zfFa>MqX0Lbid&-YEu-4BtzXBxI)Ej zS3zyXELCECD*pHLxDeWmtW+hcV~Q*jhkmO6i>N)eIP(^0tAW#cZ$0c+#y(7 zT4?bi#VN%Ju7zO5J!mOXoKjqWXtCn%#oc+lc{1;hH*@FC+;eBoUpr@Z&wlr_E*A0c znJQ@fSB@Y5ZeWP74;kz(s%n-cFnE~?=(Dkwe(G32$Y{(f z3Ytz`8k@(iWwc=L5DTQvW1p!-7pvqt?IrmE9|Nfm*pereVTBZ%ZeB3#UJ-UQ4zP3N ztxDVeq173@?CQ|A6sipuQQ^#0O(@OJOk71On5532Dxv?|T;~6nTkZF$nx+e=xyZ|9RvGuDdp}Wv1^z>ZY{PbBlK7x&L7iFb^pfCdnnKG(|JpHYS8q%;_pP`sZ z^XQPg5T5_9+{@p(i9n6Fc+Htgca) zk5Ir??Ek+XSG_NV?+ahTZBtPm*iqxN+eDl_pq+KK`?brzPNP>WWRPnW5E8JNCO69) zaSW=TA*NqLtPfFygPB@TjGTiZ_GjNOk4ZNH&_cwjSkV5n_zC z^8eS~T`HoTi2VpFp_D`0q4_iOfRadmx#R{rO5N*IP*_m=Z6rF&fAP4Od`0*RCqe<9E;k1~B&`*TDa_7IQCeoH7CQuP_16k=O(}MpW8|44A zDYAM;9I^7wUJy{sifBC3KVTa9@Qo1HrH`4RRh{qzKBKM5f%_Jh@Xcn(WReaKUcv+k zwL%D_ru>^!n@y$MMUWD#WWFHThRLY?p%>y zS{5ZQnQaAV@-#~(t*oJW!yejfiQ!p9((m;gOY_Kj&d9jU9_?brz=0Yw80Lp46K8l-;fz_OUyhTOjX zeBjCYW_Xf#&>3t!ItACuK>-GbK+sen1&KzO(vB^)SLvRvA*MPvFyJ`Re!B^5Y z3)LXTuMN=*RYJok)HLWJlQW`}qhv^^WdR5$2o39t(u;4WJ6kW5om(Djwtv(#t#gT>&vBQ%uS}Y*LX!}p3yAT;-wrW_S}}PDhMFO4BTN;puTEhc ze_>41K2RQozW4(FZ#bPE;mc!$Q}UuEPC~3)q7sklhPB0V0Ko6Vqr#OxN=bjt#y_ab=^aN+DB>95Y-i(}nE@s! zmuJX($t-{#o)Kn;pKjwy6b;nUBHR_Br+yQnApc6$5|eN_go?%iOG`)`L@(8G0o#{a zc?|;n4IXYpF_HvlQA#SSDv{_}QbLj#U}K675;QAaXMh7oWQ01wNn)*Kh%O7OT)dim zEittYg$&qll8#d*mFA>}p@+o~0`Des_@!-Q$K_)0XHO*ajpAm^(ycw)rF}Oi!ljhi~B0-Er*y2 ze)mOo8R&0`6MfNQge3$bxy`~Eyx;11pl}mRXGY!UshQ+)(gUgoeFI#E5^O*gh7{;? z3zx-l3}~n6WRI7gMgz=Oq@Eoi1M2KqcfK71U&hr{-dUCi*_xHfyIvvSKou4EL(;lE z|6B`thm95Lw~B4UGu=|!vrXIV_Z2J`g`scsJ|@sAy1q5XeJ@F$pH4HbdwB~2KPyP^ zJbY5b2;**(m$~^ddG4P7y(f7Mav9@ws|{@-b%kaM=V!C~28@>+Fucpv{M&&=`1NP| zOYS6B`8sy1$3QA!gi&}K(Hp;g|8kRK7N8&w)1RdeTIo-)OZKBccBAGG0(5X{tp4No z44pz|+9-F8B@j z_RnPTd(!H!TOH{soxp|IG06>4;;PvOl6&o5^(~632KK{M%x#-e6 zj!WxtPvf6Tr6ajJP5x6quj-_(jN zDc#X@lXtOx#ZV*rR@RtyK$h*&XSima6+SMNhcuWn5@LC{Zq}9AbE`joi+~@x@{df;t?ive!BfWkKOuPx+1V&F_ z{kPp0-V1sJK7L@NlM8>ax@*648oWlHbPR*8TE;%Q(vgN&Q?I<9@vB@2-@f-hCn|m* zBB!IL1JLPF|GCb+SiODxH3|9|9{9Mr+>P_+A$CkUDZoaCI2bf56CwNZAvK4E)!W36RN^`S>3wji5D(_O27u9)9kNwW%XS3zMY3<9$UP+@*eped`2} z*^otv=(w0+7aTqsaG8wxEtarHN_$YUifAikbP|g%Q_&%5YlVEmR*1$|GJ>c7MffZ? z$VXR(=`H_V4Z<6cL`UBNwhQOcx!B9(;xQ-Th4*^5(>1f5n|^9t-)Smt$W}dlz2|$B ze7CYe$o+i|*f#6imWF?0@En-S5&Z#suVW)+T?w&M`NEy~WWULtf^YNoB5d3xu^mB( z6=|5+&1$GS-?bVr#w>72_82r5ZbsPHg?NmRh0Eg0@=1m(oOdB)WB8=T%r0GSbjPI4 zW)#j;{`G;*u5g3avYi00Yia+Egjd{;Ot|&+K7bllWaWGfx7oIu)B60w9SM&CW&mb* zJh>qYfJKcQ&J0LW*3&a&LC1)6cNFSf>29Jz0nlq)n)Qq4TlNU@tT)Bl{nvjpe|J%=CE`uAxUD1Ylm zY{z~MIxop8mf9DH2!wFJQHHsYBS8%NS8D4ufD>0valoS`b_6AERlr{iICx~8Kd6W+ zhM26(UJ%b_EskO1%Rm1b`i(|=riKx%d7HKMKd6GXwJra!5!a(hban&Xjk*H3J~63O zrcr*QMG7m0QuC=O)B(e|zfOA+LESmcH-CN%z# zqgE#SWsmJVmd3+4f1lVC{ z74+0zrUcFyZ9>1>0mTT`@fcQOCx1Ol*IB>6ROp4tLzNWCB3nnHQ3cMr<@=5uy?YF%!YIhlPqNwOy z2U|n(Ir*kw-D=frw`Pp_Fz64xQQcq1g7A%gPLZu%q&$7gx}sMNQ|6?rHcBF zfat03-i3he;|7p=Vjgxh`)Idx?G)Gu*_G$>5=mtMx_hWhEsKpu1I?R3fM_fbrEMZ! zVIg`t2HX!$v7p80bSQNs;f0;QI!H&4O)-|MSPL_K;iYkfT z0rop!v-Q4C96fWu(2=XA*Vj91Gxq|GuRlnrrU>F13&YLYIlXw z4KUWnZG|H8eyO3x^24|Mbf{6-m#=>w$~vvJjm~*?oz!0}dpl~6EiI}B(glVFHCr!D9j#tHKHqXKFyq-3M#+N$`;M{cs2E)MLH$-Tb?yF43TOfuSXh7+R(p&in9oN3YiqHXh49c@002n%KOApDGxF%YhzO z<(494npPj9!1<9^&-n&qfhsApL~49{8e!S+pFv;p$G2<3^-ujs%ZvmWLa4;$zV1|zV;&SBAT)- ziY*zoi5wpx@ujw*BuSe1v>nS9fu85!Hri^rv-ED0J&hP>U)Wtt*3y*lDLmn9Tn29swiBl>*%9M828`xuYYUqPqQ>&@hdq@;7~1`qraS{=Dz;-LWYo1n=?x1P~$@I z(3M0NRxiD+sr6hoM;7N`%d2W}pc-Gre+>G@g=bp(O-~rlfOz36Y33KyKr-{pD1p7s z4K}}hw!4*PB2wPXYj)D3o(q!ix|CG&_5+{QLc%QRe~EnA6HTVM5*YOo>?w9|BDI97 z&bUskpHTxwAW@4ACF<>Ww2HywJ4Q?U6u0Wke@KiClX(7te`{kaChM@%C-=UjofkcV z>Sd^5;Fu}UF;6bzWoF&!%4&DL%s37w$<6pc$z4euP4vb!Oo9rmWg3xd6bgAw3vR4*6U9|MMR>}2dO4A;k`^TB!zbpk-ONw8>0d0ab)(# zL_p{lCU6=5OZ5$5rcpIr;`o`=7lUq=NDBOWs-CJyNovsEi|$fVp~;sIK@CteY*qlj zvL+UdP*~b~%a1Fn25#Q2ivCRKkSZieGDpWyP8nC>61D} zJ1rcxSUtG}s80WX^2LDzYmD+L%Af8RChnb`U_+ItWX8~f2J za!^{T{eb@R>0N`u$4d8t9LEvk3AcdNjEnj*QKg2IX_Jt{41b^P!nHByC5vTk)L)Uz zVaHhM*ijD;EVe>IW(*`4$vI{tpv*&L#w&jcW9Qb{>bQ=Q%(r2#Nunp1URAo^RieG{c8>}TY4i}bh13>X70bYaMfdj)^Te0rpAF=J< zm5*oP{J1kc{HnbqYViyRsu%2WXpF_^JRjEK=vIRZGRmvsxIqhLKB;HCt?G+SE^m-g zzG+1&CfMnzksI8p@8Iy(3a|ImZA`Trh2;yxTMO~bsX0foOGuv9hYY56{;G?7$hh1+ zJ%r3VQt4$m_kFwad}utjQzvpbrofi`{gFJ7)@TFCv18<0e!yLhzGdo^Jxb8vupuGg z?Q=z|ck)8V|M5N7Ftxa{n)$R{p`T`fa3VEvdN#3+#)uH|`x~JZin^EazFp(AaQ|f9 z&W3gI3bh}amO10^Rx9Ic^Nqr#etuPRNh1|QwM;NG;L~@)%GbqyTRzHFHZp7v0qmGj zEF9{%cWn*bwN8lzL{PhjiV2T!+ve18!SHud+xFc~qFy}Vgpw~mbN&2Jz(1cgeY)AQ zq(D6nUx1NYKYgwqlWe$X3-+IPk(Wb|z^4+@XSapkHsMQvyjeveUk3hPf%J%7p}hPi_~M{aQX364LNM zGcZ9=7l$q#+c*w-I@H>*omFYq}DJL6B*4ayeNs8x$W$dER)l% z1b$y)QBD-DXcK&=FEnBZU1Mn!HW-BI4dN|*aJe7u#p)Z}oKnI`(y|ds3XM%vh`HWz_xCVuH+zfgmN*ydY$jd)L*FR2~kMZ$}|n{=T2Y2*RUZ z!+g+Z*iTBbBIHBC-Wrfhz;++5h3lvm8_MjwIJcQ*|%Tnv-wB!5}d5&dJM_1H$I zkp5;m3j&?P+#P&IiFp;%5cn``R+_9xq)eZie3m-wt%*3lrg~X@c}PC$IwL%`hY9~| zj58bat!15f@b{u()xmdj-1w~mB!Km)3vLG}N34ZM2*`9ow>bG8EI$^`(Vj*tRnj)x zK4reM$5Qb#*}^__*PTBEW3Q;w$5Oe(Dy5#J}1?<1CWA*8r<+llgk6a7zr znS(S2e^FDD{Zz`zX3+fTl$f7o@J$Kt>yEW#s!!^M!9OlTnZK>cz1HIw&qzkS??;@k zm4@@sHZTBzuMK}%V>j;8b7FvP!pi) zm1csxH&x{;7{`ZtDK;56SMN5sm(C+dF{F#TrmL(pzKLcJO2=Fnnj8#j#yWlBY0`*Z z->=|A9yH9f^z?#PaTxkc;{Is~h>vEVC2SbE?}QFB&dzIO@T7(F%P&V?rL^_!*|BG{ zfA*o}5pMU?xgB(E65uG3cd=Y<3bV}^k#6i63E{^AcK+qU&ESQl{jpQKXLzYv+gL84 z!beZ*>yGEQU{E10Y$D*$Kupi?Ry~Q(`GKL}F!E{&*#!e3KHgU%>in%ql>*aWA22Fm&=vl}P-vE#2Z=qQ=Hferhidrl; z6YiyR7sxTT4|e&FjacypfIwjDzs&O!`Lag__F6I9#5*&fy?{cg z?Q$BTu(9NpMyky^#iFQMjJ#(e7&*$~jh*GuWDEnnNWywU&9d~&EnV5YsW+~C3=wBZ zHfRL|rPJLtScn2u0fRDOJBpx57`j&kfCgCA*~kE{UTh7N{O$T1-Gml^oXAYpQZLN@`3u}}CV zP<|IBhIjx&s6iNpSmz5YVzERJn%^GS+4PMSd>tREE4xA=2E-5YPld5H-bEsc%%Vqr zsev3~VB!G8EwY;*2m3=GJ}DX!A7N#5THYQ! z3t(;?Gd;Q;x3}oj6liYT&Smr$bS%|J-mAmEtg++*KR(r)ZAmQy&mzzb(%6&zC8+4n zht;5{S=_wB#iECItdEaD*y|NA|5Y)ZSnEZ-l-@20N6j=w_muJ5_tAxcmog33w(OrZ z?XqwU7}I}qC9~%JPNCGWnAfr&9T#BX{U)w6;LA~6mM5npcK5zcXGV8+)o<@jOzn4w zeQxiFOh*wbR?X&(soKH2IDC4^tB_D#w?EBizG$dBa(q=9v;WaqO`zd^;W8RO?VYpBabZqK6k+MYE@(|}ZCuhrQRoPI ztG~D8{3^FumN{JdRgC^5<13_Wtj?ix$Q@#ScyD*k7)GXMI}j*Mj7#kcdjpW#)))80 zC@QkIlUA8vmRZxK5FcmJ6)!bIMb!q*#FvBDUPJMAtxHeIT)-k7j3C z(bt>IdJL)&YkN(oVA?bFa=yBAv#D7#Y}LAIguSyuQ|xlMDV35G@<&&=E&2;Vuko-| z%V4yCO|)>}z+ipWf*@1qok!tRqGFHZRd!fMW%lM0^ih-GWH|Oohx`!gbLD#OJmw=~ zsYa}*E2-`7I%56%>5U7F-kS!2UJEXMWF_)M4N3TeBw%`T4->Z+k?M#iRU69TE%f+7=! zJ!v3OL3@JgFQ?lC3pM#adLId&$)@$w>6tN`Lw1}Ibz!;&9+X+oMOTM6WPQVHTc`G3 zgYClkjGiIHGJn5y;;>L}Bm|MlDSAY;p|5Xm?tMNTH!P(6ur_!@w1O#aUnFrKR)ZO+>xQv7-*KQU(#f{#Z>K_jdZa+>Mn-T{k zuYd7q#ZuQWg_s(;Ko4#gLo|>l<-yrlRZKDKNah+ZT_ zY(tFR$5Uk~#G5aPt`nPX2nYNjHiXbw-e*QNd>bYkOX7`a6=Hb5&j*C53}Ho#VLDA& z0;lFh6V(`uEY2U-aWJ0L7ER8mvZ&%`QgpW~g`YACC%|7<@rH=3k_;3jXW_B|9iH>8 z^{{{JsxLbuB-%Tpd(atwk2(aE&^3brNx7IqC*qwPUqf_noCCp9j8wsZ50QlVV%S8M zB*8;?Zv!G&#_%t5?;#$mmu8K!VnR80(FY;~P8TMpH0@vdrUx#wSoWXB1ezy8hhR5Z zGiBI8{s#1AXzM`$gB!k_MjT!ERW1TTs|qF~90Fb@oZ~QE+p_1dfG$7=(x$c;XMyYi zG(_I!5@%gG8tk`VQ>lyX?)uAE8ihvjVj-pu3O~y5eNacbbicHzn+^q=5NS?97Q4r` z!HgEuN&bf`ifiD_^%I8pwkBw;U*cIC##BU11B+Nvq=D^$D0_*amMRn|6$)k*O0Y{f z#s7RVO%+|DiHUom7QImGKFa^K7GzUEy;38 zhBf?cq znkyp8UHE*UvVE^UkOi7}V=Td+CZ-6BnEk0kU7tww`29Q;dPyrw?E@3GFN{!36~LQV`iLzcaX+(MFTRIGKf_G?lI!WN_;2kA6U||DkTvKC zZ562m4J7n@50gPjw+rQ5;pi%O!Wi>T0IHS87@XP4#InbGZ0MlWgFxV9Xslp1ihB~k2XTOU=ZX1?YOE!0$$(B%UvON{P?`# zvoP^MkR~%|6|sR28V{j!rsJYJC-4g>BDw@U1up;(fDJ?dnTE%X-RHiEYv498vsh8; z+C5k`DEc^$Q#OK5gbtskhQ7c;o%P(9B4!)?#s0DrpI0OEHWE?2|X z2=+Vo=1e6R!9mN-EciC7;V4}Fh#JMWi>-B&FG+l2vdfap6&|e$a zdFG-7y8eAeCcEAfh4@uStnJH*H`flxxeg%~+W=^%1O(A%P3HW)y5?n>`HzwI#`jZ% z%Y3fS4Fo9pNnyIbEs~vX8*ex+q%CgES@*q|LM4OhQzxcxIl6BP&eMRe%GOGFaN^<0 zZpVT;T?cwZz_d!?!%X&xn;Q67cRb|Y_Fvaf(oIP~`uio%mHSdqF)cFb0`id?&F=PsOn?R&T+Y7WI;-G+K zOSr0IpwN*V*a+|OjU-IS#cvP)BtngghKs=#gqWOa6PhYf{@%*dIBB1{%P;rMkXhHq%2p@27 zMBAxIy9S9=hkG#lGUxKZ#sLme$WVzmBtkRk98MQ5S@2&!-5@=k8F2W}hX!r;+{!<}xD!u;cif9J8>>-q4e(`<`18 z&o@uSvUJ2m0wqy-hsBE*>$Uf1*hF3*Sgf#Zn7rn(wivPqYPu#%ly4;8J%+mP&SARb{ zoJfJ~&-;X3&zy+AKL<}-{iQr}HoB$piSk;Y2qJQWMh!icidPs|_wiLbM7K9_gbMYC zLqaY0OIi$6r&^K#b%!dC70RwgmAY z+F`@TwY+6=j4(hb`ist~lwv`~%;m@*>dfGXa7CDj8ik%xt5Ng`p^AQ>I$&tEq|=-T#Y zWRD*9&tI>f)kK}vY#-GGdLc^~VM^%O%9`=#;HR38x5$R%=^cyjyl2bnKXB1^6Mq&L z&Wx?kRZrBZJTeQ`ul5ppaPOiWL#l$5MXMW_u>hEgd|mujemLZY|IC<1o<2Cg+Pp1( za;4UiiZM@>qvc0)8mCCUrT`u?I56&1g=HCjh{}-)2O}fl;dAPit#r5dt+DR@%=c5B zI!jxZITqF1W&tmT*P=lBwS2B~9?dyC``ht2vV1Es&-vxP z={(_#cLDkM;nIrc%jrvDTAy}|*ZyL)^Q~?#ItM%^NTTaD#^r#Hs?@O!v+81^6So5t zMD*=RFqo>qiA*#`v=LME9EBNU6%qtB;rEgrUC7?6G|!~ePrw>9{_Gcc(H-(~Xc)zG z#v2o+UOw;5Uqv75jQGy{=|-^-|7pGMy!yy*aNM7~&yDR&-NSADXrc}Gkuo57^W^H~ z_`rSQb=%?Y?#FLB-(~u0 zODhdPeHZ?)$-wou9K3z6Mkaule#ON{)NGL3H^WcdPnY!^zScE**}F%ncI;FoJN?doo+BYk3yjrv=sRj`bKq%pll6a(g2EjUJI1q53ls{~bV?vpYzx-Enyd%o z(SxUy+!>F=fj%;Mz!|DlQ0i+fS*vu>^h2FWXnmqN;eX;)cGA;y3NHTsVndE2wcaI@ zpV{2o0w#w4)IA_Sc77C11UcDMaXb$4dbg03T)zwLOO<9mqx|U}3=<;3H3E9JFv@FW zN<|xF+J+AuqCkgTM9Y3sy#7CVWEJc?)c&=-rj^mW@29hFY%p!rNvRi}%DQUyNOjsX zbw`z zSzj!rl40J+oLYg$5(NGEV^O7QWFcS#Iv-8i=0jNVKcl>AC6fx1q;OMJ^kr+5I&k9z zcT}ZIr|*rQiVA1ZYG>qkmuT%$X)I!ot;ZDZ@85qv8U7P-Z-o;*B3_KmQLsh1v|r$z;kp2#wBQ$mCS`pw8&7aM<2+JX2|CT7zBkqeQDPW1gu}o zVA*5BPfh`qx2s^;yIoORn1ABYF>MMhW8kuHEPZ5G4uS&)%xKe*555OGCM(#uYLf)L zKdX=q)xY0Z57i4ioG)8eFlBpSacHtX{V7Joy8cIx4O(WO%dclYAl#?ssIj zu|Y3%ew|RW6G0HPAG%f|0{mxygJT`|cMBlj@aQHVe1+AA2141nb_H9=GQHcaRgiZC z@XPX=+oR)h?$+ZWaIU>&Df~&2JH+!T8XRCvTV2m_>bpR87q{AeV!YHEFQW&S$byo3 zxVvZOoG<2TyU<4OashTeKKht^`mvwW_4s7gWE&2j5^N1FGU;l5-t2Th9i+dT0V$EogXqSn3Kz_7Y_Avu={411%u(eIm9(D2T@-o%Oa z-)G~k2i~I_b{WmM!I=H~?J=zTAejVtiB5od2Lrb9qiqNV+99*8iWDF+@-FbIS%TF#SB2btj;({Yoi-G5RVyH*VZ;r8N}8 zHTwm9X7@yxqfYz!i#mFi@X?zEDgbVE(uH7nh82^^AjwMfv>7K)?-m*y4RUXx_>7#4vhe5?zq_|>4FbW; zPUqcI;5`9zMnD1+lud=|6$6)kJhU$uO-S--XMai};Yai;@aI?ren#h*`(? zrfV1q)o~|-6YWJ|H|5Ty^Pd!yixPh#MCa1c!v$Y3nLl5VijmgOY$D+wR}OL`>W6IN z^a(K~7IuWaHFWcBBRTPW#q{ruLWM>iHMJlUN~(rvS80Kr8W+cl<)~#=*Odd-9fGgs z8^jXXgMk_9f3Zd9f`-78u~j{|k*;$2%r>?_=1EG3P0UXLEo&%Z5ob#IVawj%!E#@D z!GpY}u}L_z{z07eX7H6mtXhUSRx!N0sQcerAxf;Gs=&N?eqk)qk^v4tzv~M<997GR zJp<#Q5DxTY69ppT3qdw|QEk|sfIMS52D<<$ zJq$ZO4>h2fE+9|?WTMB<;CCg+9Z*i5Oq0|=RzqHuN3q+gzb$;L&(hDCnN%LquNlSO zKZg=B2&)kQz3t-)i{dC8z%MN^PWgmy^qhfqfhcy|w*oI%@;U*qeuF%AjzR$_ve1?toLipMZl*a@ z8c~9Z5P;82W8%pvsM`UV^E2K6gYmv|DwlACK?H1!3p^|f$qOKgVgj-FP+Z(H_PmIq zuo8C81jc8MT0R1mm!A-5%LqW(pogOJ({ZWTQDs&{+sP*Co~mTd6moPvA(|BO!JnC@ z)Z~PEbcxjrpXb}^_N0DLvm#>=B{x_6Bg}%PrK_O$$B2SY5n`wWSA)QnNDYYb$F=zR z6_MSBN`{7t6G}=-7{e^OBvYDX1|68fhG6)xoX*HDM@22Vl0Yc zEX~blOyCKZ8iv&hX&M@0>SB(4XRwQ^Sb|#RMzH6X+9jmFD#_0eiYR5Yi@xCNW#kA_ zjpDR5Ez=HfFdNA#ifAz1=!O_f2tD^?!PQ96`g-DM@5LH|OdT_$i^G{6gA?!hm+_Ut zC?Fb+&2I@acWyPe-xhQmDc^}#XW8_MU5?cCu?c+H!Xnl(6!!0XC**oH_eU>6-NThg zqhNev=F2RIrrC={>nwh>X<4UDVSMNFxg%nrIO@^WoBvUd&8!cRWnM8_)Ah>ztZK6> zi{{}4bX_OyO6A;JmgPr#vCNAfmV_{Owj5xO+s%wegS?cYdxc|77N~wy zUS>-=LE+oMcJ-m87CZ~v=UD}$^-lf?Li_Q)O5(M$x8T57-_Oe-Q4`gI($!-L%HVm0 zg@Lx1#UJt~p3ujkSwi2~>&<5&)>@MqKW&?emJH=yd@w|cky^s8ds#}BA7A=GOgn?(=bL=}=P3e8PXVyONR!pJ4|ChYlC z*7mL811{`P%>=_|=0j!iXK^$h%7G9Yf?Hk!^OOre2YE38`mclX!ivDA0P4vZg^lL4 z3jx>6{hKF;s}n{2qk3uY5~9gZ=xh&Ozj=x-(7pgOo5|i6J%ReEIb|{;XnE*r{xyjO zM;ff)#(kXJa+9k3v40B<^848Aiiqpj4~P>5_CF9!T=;`}lyIjH#5;`J6?m_c!IT_a zo-x42Q~@F5w-i5{=Jk94XSk6ef%6!Sz&APjXn@al6JMIS>^#`M%?IRsD7|y4{H?Ks z=AQO0NNN3vj&L+v{aRVdRRt;QOZ)D{i;RT1bwn1 z{-q?blEGN&CGfEmoad}tftY_J7etBFYJZTaxtr&568`~Gp3$+uBUStygD)gTc zYL*~UPNQ$Yv<4xf&mAfBd_x&l+Vi7$Ha@uHJ>|U}cMT7v_c?4H-A2C1q+J?l_0&%ye-cd2dsv)26}EF9{{EsEmmkn*+Cj%INFmQ*YVv~~HetCpzCprosn7LT;NuAmzG zQ%m{MK%5~2DoCKL(5g8Vh7u6QO#6k8YoccTYHnEYl)8G#AvzIhGi)zxt=-u8=^1by zZ_MSV~teLr~e~ju1M+hRYQxc){I))+7c30%>ETd zZf+EeOrr$h^xtOoCPZ=HAPa@4_m|AW(~F3<%bK!HUl6f}UbDYT{*K~$4j zV66dWDU%Qs1qE(|$T9;Vh$yw01v-OJnvkk!OoYgYDFTL+plLNFIV(Y0hK!ddATr6K zib9a4wP8{%1tUl*&{8K9WG2$MO$gLxCPGk@tXU$N0H{)Gbrk9fQzC;P$xMNwg(w#w z$x2&n$OBT3)xoIRGGb7n3Mrr{L{0F334G^O2QyYbVA43{8BROI4Ca#=Uam=_E}=VHVS; z00}2A4)VYVXhHz1Bmf2mDZtR7w1gFr{JXjK)|Ws6u1^C zWQl&%3BeqWzrG9)c=&rbLVMLdaWe%zSppV_7Z@ce@XCK zL4GsLU?_*J_*@Wt?1G2(N+agr2jXBu#lZfQD162Bzy12n2lK!S$gChZ-I^gl!Qzc) z^GNp45#Mj46jxMJ!-eZXUPone{gBe?Hu7wz8E_|dtT0<03fH#v%(3+MZt#%zJ#%k{ z3ECDStbAcAp8XDXC-J2K{+G+@VjfTj;6ySSAmgc**?%t8H~(e|?`?k;U*-z?$ z?FSc}fHO`Xa!9(NqiM!E)h-cSJ z;^g7G6b{w`=xa>!(1Z?h>}U!7eJ+RYv#|(79-MDcEfyqz1@?KMN%<1`kT&FjrAeT2 zU85nRS`a9S0?Qi%4y51tnvw`XO7Iur^Xzkf(uSmdC5$k^LD8x}3<2~zu1I;a=g?emhr5dCB1?pA+9cdhG0_Q8ef;JgvRgjU4 z*$B;(RE^DkjwVn*2D=;v4;-ZLmEgt}0Grl*q`$}x2~^vVFa~v~KFe)qV@m4n(KX1K zN`5p1Jkmzjt-Ig7KT4&vkynZ7L`X;OT&%_cpS#|j$Kmwyrk+g+O>yu z8Mo^cqU9;8DrhhjH9cbbo_%UxnP>$Qzbbn+wbc!oJGtIeZ9DbYr1?KH zpIk1QRk#G_dUdRH)wIh+DbeKka>l7!A50VJpb}??s7obJKincKd}GZ*n^g_vQkm|z zxhAg|rafm2!qAmtN?q84eT@+$dwjFB_6_0uik74Czj1+m?h-(MJ-UAN3;eA->e|>3 zm^8oa&5(fdjh=s90^@)7Z0`!{k?}eo@SYa!QvQYZOjYuZQgaK!`Ziu#4MV63DBUT9 zRTP1=E=Xi9R5UapTSJhIAW&1O9D%B)Dkz}Ul>svAFc(mptwkZJ%)lZOXfh2$5S2<& zj-X71D58o=K&2uAB9b9#3dszqT2mo1p`L_pF~l*kG=mNd882p{)rXo`5Xc4U{2Iv7sSKMDk5}#>jXPb z$>Pwf>S1|d6Z2u;AZlN?)&O_Pfhu)wbclOzUzh(LGq1e|kdgX%GEQuK4>J{Zk$B(} zbOLgEZRUVqnUOn)KBHp&&LXG0^c-pZ=#PPM{FG%3^2iJTH#4&4 zSv`JmzyYtVM*slPVuu(2V4wL8FgK#i^z20dQ?C_$#Z8~}cYVuy_M>>+=jQr6K6Xn* zTC}$qPT_Rk0=(Txi@5>DmTLpLN$vXYFUG>_x{fDl~%E zcVB6s_X$wxUmdsobe>XAW|QPTl=f%AQb;eH;#uhLz|Gn>WO zZd7{rnvo5pK<7Xq{t}_>{pNa^6WnD7l2zjR%mFy$Y41UUn?KF<{4}fc(7g#dJ%%V8 zVC#=d@6vo6hkFCZ8~HijOJyHBCgK1Nga<|f_ipP-^k>Au!Z*Xq@ZG<|?5`|`bq|I8 zU;F4&XdadNG91X|pNQXz?U=6rfBEiy%Jd|C*ZXkjW-GdXS{?A}Rl)35cZW4EM^=oJ16i?tKEyJh6a}sR?(lYU>R(#Y1F_ zn{=m+36e9!Y$W>>W~D0aeT`1jZ|zgBZHW)zG1;KCKsCCSRkJjjWNZk54oig zq8Go!KdWO!%g`)1)Jl^}%?mU%1C&8g~TxYYaCZ zzX}m?u!-u@sqyU}jwo4WSemQ2Q zxlv9pitN@D7h`UNP{`K1W2n@71hi$mPp0SWeT<_5%lprPJ{D$A`Aa*=$Wu?8=1^BI zm2%gGvpl^o>U30m2sv6FZuWBPPL(|Vh1dy{Qfe*As{svyBgM^;YR34C+I`lEFz+g4 zbW)5VkM%wBkPw6+2opEgB%lB}!O;012jaIc)smE@`C_07@W)aliEb*41TilZU&m*?P%#Hu(Vo z^}9bGff{Y=!kbdZ>0HwRmJkAyosW6vO^+QyBt_@eKvnEtB!^1a5St^Vwpr*qHFNQ(eePAhq1Z(QFB$-y~W8NW^qLW;dZWLqbkG16a5UH?5d+o#*=B)WMdk+Q@7 zDdu`C!bgAE9$bg4Ss2WS4(z`e^IuEVhS{zQGmKTQMdBoAF5s|)WC_Aovd^{`LVgU@xnyVGoU z@Of|Q^B?E@zZvqJAC-%d59om92!8~OVGl%+&X))AF`_I%QFnM0?nr;}BN{;+#?taCyVwCn0vv(m=^8#7u6D=}AfGj9}J&)AZw7lV2PN(>1 z?Q;Lamy4g&*9Aj=AmNg)FV$G(AAYasow#g;b`d_O!U6#x`Ol5B`5$J_-gr>;{7wV$ z(0GbPg7|#lx?et;!u+}JXk9;o4u%r_g;lKf75~&utLf$q`W1am>p^S}#^*;Zr-}+y->p#=RXDX^aDFDv*>OKGV{iF6cb80}p zZ$DZcK$Kd*`3U)$2X9TB34=y7|8}v|98%?y86k0FmlWhtKv7gCtlI%{P@p#uWY(}T zHj^f%q}^n#14~J%+61B0v?M^<%|WR$T#=+&GEm402!_6b9GzI^WVDolW+H-R5YnQt z3r0!`JJLJ<+0vn-U7x4dx1#ZdN`U%Zn}b7#4kb{)0=LWh{l=GOM0BHV)z-RZ9Pw%8NDzL7 zgi8T}1#0}0Qe+}vstrom$aNvIw%2xNf^uG5FIw=$mNm(({1S-hx$%&S6tIWf>hTcM zdbFKi{ry|aa$HBl>%CR`cC@YKEo|g5T_JNs811rz18(n~zCf(1f*+ktJCWiyidI#x zNH9>i@2Yf!`UD9VqWJmqc;ab%z+EKKgcFPIHy{>70Tu01!rQ8enjfRwYt*tM;X%fm zEfF|8NlAd#;x{)P2A`Ft*zt6w2!80b<`38?04>|70_l-{2&wj@DK6)#zttZ_kmBq3 zMEK}ifTjM|e3MEOpWd3Dx#j)IosDtIpaL|Vr@Ib=v$j zsAOMlLJNgJdtUZOZ{v)w8h}0=Dm8~ZB@3^Zz((<0DjGId-_i12Ki9fKg)77}`fPsGhSI@;U-h@rh) zTB$$=Mc7SBa3yi$gCwb`-`A0%Krq(>)5v~J$#tv(^5cl>AJboqu5SJs#>+2W9*z()Fj7*XRNC! z7zU5$zb5}swe+^TLZi23;jbGCz7)%Nsq?$M! zh&?O49oXk=wg5Z~L$V?qem1)nrrX^?uV~+yzvd{);4{k%%DM76ahiBhJ_9A|4O%`G zGN^O(4}$;*5`h2_>RP-VQdEJgxyPA>)i~|he z#QH~9k~T}lL&m3{ia`xOj&D5mkO3H_4f6S`VEcr}TIg95F#wT--*$>+RV`@>c|Igk z-0Ci@DvhtxB;=dx3xIVNGG=yG7ezwS34FS#035_i^F0K!4pY32oz0YnIC)+s;mwH| z{c~#RJ1Vp~nvE8H&wPD=#7Rq~TMy==*&l+Tnz^QLZd`ZxScrDk#SeYD;r#QJ)bL)t zX`xR!dYG1F*O)W4U#=+U!2DTVb2)Fo3;G%RuXFIgNO6(#jp^Y0LG7?&*f6V_=O;K8 z3zW&Hi`$Dlt_v&isd0+D8bNR!fWYJu3UjI$kFQ=2JG|gDfeX*K&*DIFD!N=x6yxze zf$RGqo!0C)8ua(NGKTLPv{tSF6$@4$ZFZxtX1&*u?X-jdfkeWOl)5_lufnNuXN*V6 z(o6#lo?|DpmN$|?T@q-E{A||Jd~Z>9`%@5f7rl zyQFZA$T%SXPb(+rC&6mVSd%~W|;-Xy$o zs!64HLc9`^0cHOqbG{tik-#!2q@F=uET3Jh`nc^sjR+Yn-Q7#a^tQLJ0%T0?{YD!_ zC;CVODM&b^bI1Pl6JHgHEr5G}(vhr(TmlR70|JZE7&yQTlT^gi8K>;F``KVXJI#%E z{guimP%`nFnW1NW2{pMm0NW)TUJvY`ZJSX3cW+VK&zjVl{4aT{Km_&I?vJ7uo6+P> zbM%rpe;+fA4-miy(Uuur#d6+NXkr(64MpP4hc4C6c9@8c>+1m_91+9@(Waqq$5`y8 zGB2m$4DaULfQ51iXPvvxmWuu3@74P|>me|70xHd_6F>ytUDmc{^ykomLwma=G?S|G z*Sw%=rT|k&%zp~6Ebbb|NpcrUlQRZyq_plHgFpcfOdaW`Zi*n5Nd!4 zV80o`KqtS>JUgsJ{1n+37RLw#vjb04`qysj7=&RxNzgZ?lF%}LovK&SjnpYt;({f6 zt~dZF&|p{)0T^vpHUE5z0ElJ*85x=aB`}}+z+?x(<%ZtNx2xM|K+y#!p^HN3f{Kp!K0qDISdE$A# zQ^arp4s3ziLiaEo#E;fa+k4OYxjujA{*UJPZt#48*ndB*NWi_ydk(cy&;aF<7-9et zZiYm^4Hc%copkx)S|$LD#4QC^#egP^1`wBmsA6z8Wpv7|dXo`mi)vCpbiW&)N`fon zc_ah6k(h&wWUo5yXA}cF|6p{oVRUXVZVl#(~D?ce38GCzBn0e=DMta<#6eumvv4 zS$|+r3_uUYz^v#%4YLM-!|+#xyL8S%ItlYy^3Z+-1q(btA&BxX z4p2Z3_H&v5P(cJ)F&VXlfiqlU>y5HD9u-J46725G+KwTmm(xxk(dva;a^gpD8an6q`_31FRsaqD^MV zo3A6{!IM}Mp$m}i0F|)k9_2GSG{sSK=g|V`=qRwHfTH52F*L-0xHJ;r3kr0u?(OYY zz1adD9wKu-@(IrryI&ue`-%}l?uT8om<6ZOZf1xs@v5TqU$qtYoH>D5M| zY_b+oQODE07%|&iyc`phxT{XI_xZ=!SNpSwBA}32Y1CX5G_#m`Aah-@qw$U&B8D^S z+3w44>ao9C@x*<_LiBy2{<#u+q7^oVI1VK8aAbM6`DnDEsSf|ona$=GKQ4%eJ3OYJ z^7Ws;`kNviSFrUy&-C6anxecrOB3~EKF?oS`@F~QdKi26<@WqsP$uFNn0J^aNI%nX zcjADCGJ>)|C{nE;(g08tioj4b0Zhz8K!glH!ix^|yCcOx5knG06%k0$Oho`uNmWVN z{b3Id_`8@#U>^QN;0zq9Sl|RpemCU1 zqxhzIZm!0D_?faQ`4fn$h$?ZpGB!{Dyi!I5;6H4J1d%_fG4vPpnztlwh!5ZH<8rb)*d05A=!Lm5yQ`2f{H91IszP* z5O@n|c!J&mvZLmY0tCVZkKlD3Lfb3?e0RWqb)|B;I^a@k^K4}8>u*%#@UZ!msD)Nn zT;N1?#yYmOIO)-G=5pxSc1%jyB8V1W!OyYjlc)JKYDV8W{$INg`km^7Tf^VY?|5sa z=MHx3x{CMK-tUFlNJjHVQ&gGE8PrqH;RFCb1_t0|fG+j90AIb;&T56+)HELD8x8Mo+J^&~ckt?P$g7#V;^6;8~1VCWW2w(<w% zu~@Bsfu1pjcCEw$xc(moX?KPU9kJFFH96}mP%78G?^Hf{TiZIQrbdvX=P$|=19OG! zsnB%4J(IyNa&yH!QeG{Ybg=-2w+*>-K@#NJvs&BY>L+urbg}@JxQ(=B>^s}HA8NVd z$($?pSk;aX_B&%e?O#l+>o$}(MJKBBD|Mq%!ZvXPk>EZg@h1d1mSSHS!N-^8q}8Ap zAN5ZsLQoVIO&XfO+)*$X(ll&>+-!+51cCf)d6a(9x(wwG8OY|sMA?#m=mVW`kpBcl zqi7q9JPB+_<)(wJE{ZsFdDkOGx20RVw+l^7 z_Id4ViAfRJ%{FO%+QPqnndZurc0cApwBbcclMe>c`2`6 zk^QCf{R?#dZ=qT;qO``a{!)Wzd?lR_Xbv?T71geA3O$T0>(&|%^?XaTYe*|@4&o-* z43OD)@Ks%t7QEf1xcc%@E~_Yu56O(p4n0f!(eUHf_!oxz>o#*ON&w%leiMdM^*kY2 z-=QwCAcGJ_W(}+~3z#{PCAWH7cao2Nzb3a5TibgpT3E;r0$vJ^X(pvJi)SiHX}c{A z(4qz(-^Zn2zhlznfg8ueMd>{wB}?bCG1x0jyfaeU^5Bufc-LZg5Ys@J&g@BzhrLc9 zl-kl|RU}>tVBr4MLPCwSZG)e_m4>1XuI9*iNx6W}dm3V1#jrjU2Tsw7yF3mJx$+6xTkcKTAnG|Sl46P*x3Kegs}9o#=`spDbS6%fP(=FC-?n# zM`Qeb=lgg5cTbb;Ie_NwH8cnbEFrF*4{_}LT}}%D1T6X^NI)I6qn^|)B}t+&Be=0O z?p@T)tYnk0xp+^mZ!PF`YU>#Y@~Ix59v>o``~iJ;vs^rW*<%%RZJN=kBHs2ZZR0k0 z!x&(TAps)oj<)=wo4r0@el3w6poyY-veWxE6i7=&cB&q^8Y~S1X6(vR1ei$5khw2t zdzA(t1<*p_SbMOmps`%XaS0D>FI3=m3|N`bWSnv`Sj&EY3BQ1#MW)|IPEwxMv%cbP z&qrfJBHJcSK3K)&{@urfgZdS#=&j%$AVIZRi`4B-^v^Ews$^1?p)}+2Vaj$=@Fg>y zDy?{ILHa`t%%x>__vI%mJ4eNcUfNwNmOfvSIB%Ob-Q)W&q?|F4mx+xfn;q1TbZtTZ z1=>v?pI|_Hjo-wghv~4sS6%@(&wRVsKnex7n%LMbJvZkF#_CDu6=C5|8Q*-d(Zcl= zBsFU#!DwjzmF{c;Jg+iy&#eIn8a|(l?|P+Zcli6)#19xSI)TAc{kQ+nF#yD>0_xl5 zF+&HQtSkK5A5Gx%=r?vB=kz_F%=Z2FU%1N;2ku(0sWyRC8X}6^LJb;)6Q4pw0=Kk zs-P>Zz_Q>|*8_BTrAH_2Q0GtCj|OgK{2F?b^e2guPl}wbUn@r=(DsJ z&O2>Y6@@g?^5C3)Pu)=DeoD$_Q$&~oZyz~5Vc)J$^D`)uaVsP2dU|Yyfu9Xez2A5o z&3$yEN$*_d<^^xmiTj76;B^}qVT#&6=JzLEv#`M4^X6V@4Ir+)#9*Kwk-2+`QKxQR zOCC8-R{gWl7fBVa)H>r5fMZ5lupVxP>vH~=<^88S!e`8MKu1|bU?G}o3=ZG>`x&<>JY%g}>Yc=3 zBUMq(h$@xE3`Om4fF+@;@F)8bE-?FFYWF2m4|ENDA4_k5gJtzf9UfKu0`ND@3}skdbL|ccR`BzXO%1Y4%1-h$v&0feCa1k zO5WG&v{>xnohf-}`kiGR2Vq-TeiQ2=T|SPFEC!#}zU{e@V{Q7KoSmgbq!6~WHrT zl#?nM00bjoveZBZxJ6z~_MO6%SVBt-r(2B3z?`0Wpb`MkQ=0x;95CzRcM%-8qbXcP z+CVVV$O?G#zURluNkNnTTgPI1Tt-Q&tJO_b`d|{-^&|z+%R7~ZD_O5MnblLZZEmo} zmsM|hn*abdzK|+h0Sj5Uq1m&^Cp&>~r9cS%X9@2M-NW}pwyQGP2R*abb;|wA>~EM;&xxY{3Da4d2mrqUGD9p#*u~H z^><27j)91clN0qr8X6*oj2le>In!yc~L*h0E!Sz(yigAq_n4c?s4d} zlyhVNfDnKrLi2}I$$eyYsiy!4KtK;sB?ti_0Cbk6BqE=w_nv!|A^3Xw$bu+5`*pk% zS82?}jq;8Ficx-VuN68!=UFNC6q!cy%kd*r-Tmi~{n)cp(+~sa`zSE#bLA$~;UmJF z*%KbAh^lcBWtj4(dG*fBAb2_8zJ1SB~u6tfBQl@A=C@}27`x8L-A z@rr`$Nq#a!CK_fA#bclFX?tTqhD_tq3PdAg&WaaU5ZXh-r%$wkxzHFv7p67I9*>47 z+oUmKRAWH{B5ls*VBW`>1NQDnr!p#jIj4A7*t%*pOHA6%tgUz<6~ zuxGZp-X(pevR@t;5<5@Cx8!?WyMdLFjaiZPW0M*4FM}T~1hn?|%C66Uanx~rQMvzZ zG)ZO|rG5cm9Bzc!nRDWd59i9lcwj@&aRu_jL=PBX{=+aHQrBIO1K@x68M26NC6NNb zgfZ4nE1~dxmOM6n-)5AXK!PWlIMBilrzmqo7Qt1hIhz?ir@oK+JEPDu=qT^L>I7jy znhX-G^faSnPkJa@lUX|I41dJvBW?^b`VzW}eUn-0m`CQYTGt$;xQnZP{$|sfj_izo z_LM5h?X_b1mahFioYi#!{~;PB-oK&pH<6nC#F&CxOlk-QX|&T*z(wzJL?8eHZyW$O zdfU$TJWe#7lf!!;2tsim=jW4cW9(8!h=Kq3D3Yo%yN8LaNln&hE!iNwwDGHW^ST zgRbWRB!|gsn1HCsNk~*mVWJD`$ERBKq~efhHjs&wKJgtZ-cv#Bj8!SV5H*wX4V`Rk zo@stZ8Su;VIvc{LvG4|RZAXlHPM9>dh!c~xB%^Eq(kyjsV_3itMBcd%TLRA+wx~P? zwlYt$MefoY-V&Zqm-`RZ4HaHMaFDb(w5ZBWcxBbfyZ{tFx&a^xu!CGh6s~Ipx+QBu zdydI9FI>VEb4#bMXeE#eF*?F)$9Q@hdNWq9Pi~1ZG=80Kp=IGB!cI4iNy|GZnVU(z z1@Pu0+bTa_`d^>=e_!1nt>gB%ieQx}1RRs&XHW}D3?fP-3=9k`Fa$IZ3JVacW+0{m zEIEUN06j^dAxIzqKv5tBT&C<6gi5ODT{9C>$NmF?>2OsQO%)mCbI(7l? ziXRS|OD1Jzm7cV0Aqz`7fcto7{q1KX=*E#mSA*Bh!y+1Q#=|Nw`2>lcDe?Z|0uhpM zj#x=c-v0Yq_vIMC(NBxgedws0c7uA(5B?viJ?!lKNsX85CwX*FI{9HIh?SS+Msr(t z*Aq6n;{b(n{EvhQDaZA`9?BoJ5aNTs$AOL>n+`(MZWc0R^8%W{nJeo8SM`nAXBvE- zp5od=WGnN>q5tX2&NTxJ$I_t+j{1tgp?gQ~(7=Om>nw*z- zy#}TpVpnz1CqorFO;bZiMnpRe{-w931|Tb zKpi{_{r-i7MQ#5yhbGa7Xb3<+5lZtsF0PedFTXN{z}Q-Bh1!VWO98uUJwu}djRAzSPBSQQYG3HXFi0jWZn z70TlTLKYKy8jSw@m$p1X!-)B?3UiQ|$SxsIa^tW0aii4RpW(m=FM#1SQfK z;zn#eAN2_rWps(EZ?;Dz{H&aMvL-@VWwN&Vr(WmgCIM0GN=R_nh7YJKN%9p!gEEM+ z3>eKzk%T{GSg4*^z)nIEuy-mKFnkyJkZ|kQ+iq{y$bR9ePAY4Y(AhX3LPnNHUf_kI zXxrdTGTrL{h zcEE;f4fc)3#$WK=xY*ooFf@Vy?+IYRz*2{xr`4(Ue(}lwe%Hry|3}OCUmw}~S7Lpy zbGIS7rBe`q4YzJbB0Spv8&NCUzI~kTiY9#e3(hf7XK>E8ezYj8rEX5;G~}Km=Klip zisUX$&(zr|#7?Aj?{dyg>zD1Axp}A+TUF%AE5s+?iwn{B(qf*95V8CMN`T1W6IU}G zgmG20(jk2UPCmeE)NI1e2;VaWi8j?Ol;O>frz%8p=Wa*MXoGl#I(*~;2*oeBdabkl zH|se8yP7OTr<&(jRX;M9N=G-+qoXCXMeX>4!!D++9T#zi7m;>nwV(oGth$hH`#46Y zm9igL-iK;7q7D+A{mw6BBwvLR>(^ag9}tdd)mRx9kn=uQ%?s910QRwfPFF6vQ#&?E zi+b8Oy75)JC;=5zcWwtC+|XYy!qPqfLJ$JzhWBG@NLQ0#%Gb}`mA&Ks z*qZ|~S(e_3`b%=%b@%HOF7hG`9UMJMg7NI| zjzxI_qpFveN4cwcWv!VdTLDpyxuWl}0e<#cz#_(Rf63w2eiLQha-;u6Op#XrGX{Ok zS#SXfxM91D1N{X0&P8j2|21b5))?NYA(PXsf=OM8GQ?>1X|oBiQQQ0l2KO@*2sFVV z0mla4Yr)WrZ(%+q1y@17^|@S}Hi|F+rdur}PAfk;LNFArQW$2p(X1+Jv^U2R1Dv0J zaMDvV+WXi@Vyy<^BZoRBW4Q2pw!99HyLP;NP5sz`?2r!^<@paP`~^X{5P|_varXW^ zd*|`|F7!?hhvw-{`UBnW@4d&i%<1c?$=Pk@x;wQ=6h^L^fW(i1OE}a03oeFB{i+jO z^~o9uezUIGR<7l9^d{HJ0f=~=fDr9JUS@YGZloAvS!Jl&>M4(M#}f+lfm>Zv3p?z@ z?`vvN?6_2}4)SLe;BL9AG#xPkLl5($reqO#y^Ye>Lz4w`yy`wp#fISpilXRWi zg)8{dyGd=z=>K9pl?6OTWfwshb$<>`O0=yLixh$TfEAMEj}E;A8}@A-@=ER;0U<(h z4zm?A$E-U>CGKlb4RIe?yTyu*QUohj9ehI}m)SwFm91#vd7~!QBu}|yess!5m$ZGW z(7EQHW}4ODxv7TBSKap>wLUCWFt_C#FUX%`G|TQn>f_0|s`yI$=~y)1Gmop9eReba zAwfU@WTR^%(&9gNe&?RR&i23`h;K%$i%+SySnt*9iBx7MY!Ctf0tf+bbv)2p!UjkL zv)~Y5k^!_)Lu3@K(53fD0htdx|IuvFtd(cflsWd}_WtXGv#~>ulZ?fk@O%IuvT zc|8ktk!GAZ35spM*hUBdq`Zfea)maecA@?g=}^Tzy51%l#>##7tL*3_gGQG|lt zPpMayluGf)!G!ZJYsFBX(0TN-vvxDz_DxQmryL6xMN#u(0KhlPYp`($ee)mo;9ZdW zuNUcs=n4+XU$OO`vrl!!?&q!bylMmtAq*h=0GK!-10*npB1jTKLO`UF1dyK|FsR}} z1d%3(1{ni!02-7)Pjw^^XcVAQgeV%AVikyBCLsI{%s@dVU=7KTv&&q?mgq|4dC?oF zan4qYs9%QdtVF$#;H8@_bWDko<*Sh&j>LTFx4KUhhxw{DWlH=|?dmC9;=b&rVbqrn z2p?vH*Cv#3R{We!;Wy1R8SuxKxt)bFbz&SkAJNa|w8k48Y6Z$WCN9}cXZq4Dd>(3S z-kqCJwsKwtAgex4C{4>t4i!vD1Pdh#h$Ss`;nh7R$hjflNu4}ecn2X?MSfYsYiR_$ zTun9DBpF^L&E22rY;YHIAxf@6uJ+U z<|qOsA8URt{HEFgIbe7Qj0Vdpi5bFQJf;qMTwO1*!YJk~5$f4IMg>^}aq4{;edt+! z!K|LW?`%O^=$3jg<314%r*Y|{fMz*G7u>zp4iF5X$T37k^t`RQ}b^%~lgr65T=^-z#JZf*WwK{OJtaC>-!-5nc zzwWj!g`0K(W#ZSBP}36Qy19@n>U`*C!(Xb}!5k)ht3 z@bb>oq&r0W1cz74wScF-rxFXzh1w5N2B}$^AQco31BQl{WrD9rt;=|_35*yV8E+8n zFydYX7PHd|MgUS}a;lntFKkaw+ev_O4TnMh#?QL9XWA|+1+Asg%6)TojiG|+C(cl6 z0hS6zC-yU61@c?>Gq__^9#bRVOnaj;AZ0NK+tW1hh**Z?pahz#K1JzF8rNp;`qgfa_{&3ci*unrj<*+p)us-h$A$>*};~hn1)%%cf<4CZ=ARO>bE)Y&v6%+y$zB zQC;fEdm>6ucO}e}X8K+Q=E17W)bJD`fgi*F`}00m>XXp_Mj^mql|WzFhvmcDJ@?pn zJ_*=-Uw8kX0>vX&>(Qmv)Yaa)eF1wVSzSqS7I$tw0%WFP`NpQrEBHuloa1Szza-(< zEkWl+&KQ+K$M&BIM*k_pw>CDnmred{{Wl!zd-)T#&bCYXmkfO@58Vs}8s#AgrSq-k z)I?rem?KlvCE^CcaY`3zCUinDyv;M!S0yy19pBg#2ygLd+jR9sc{=SRWRc0eoCp!gpvqDS zAzuRW0V0=L+$S5&Rf83~2L~KCyW`~sN#rP>10cUCS+^y^%77K36;Qt-aYXw;t_F4` zEKXsqv0B4Meo3-D2q>^~nMy!w_Q-Itf!`3rK>*g?u>%2TLHIGY)z>bM%B-L;GavaK zJI0;Kbkt>g`F{d*VZ^)M0=m00u3<;57-SgZJX0R}n49{SG9iB$r_x zpa8@=8~|g$ac`-Z-1Az8BZpC@A_E|zOp!)GwN23se~dbb29B|fK%vAOh(gy)fyBVU zEFOw+mu-UUvuiAn=uZ+(*IczjVX9_HrTs!j+bs&7bkx3p${4pL|EgtdRUGkT^r&S^ zJ;@+KFoXZg(UQ-a2~Azit8`a5(`nUt`})7x#;fIll&uYj4I;JVVI3no+u%WVFmjLT zF9A$A@;X(BZNM_AG%)Nm&^*>U=iDsZ>l@|)wZ*4d!`L;!w9ZSzt>eEl!#Gq$Han`MMn!i=2uD^;8PTE9n>xtK3}T4=AUUeK`Q%xOexk*rH@A zw~Q-hTHfz$MHS79A1icy{I_*v`0tT#3cro&pQMEObK-ZMN@_j{*($0;!ce4gF1@D7 z`?pm(0^Z1X^M>1xn($oycHGN6-;5MLgWkWdwDo^0ydSWUL>{;wGbWz^OV%E5Gh63O za#Eqaz7(T(H0)<05DLwXJ@*3=4x9GO&aQWoNPAEN9yqX^dyZ^wz@H?}^s1#903z2Z zX0prDI}FVnID|*-;f<;hxxMEgymc9nA`n{@WF@Pav>7(bM~*z3{Z6v9g51Z4VX>R` zF$Z)pIeJ^W3~k+YKD#-tbe;#x1QWpnolj0(3~BJfc5J-dP7=9=7j3Gi_*?LoKqLKF z&A|G^Alhyd)+!`0T)68wZ#q5^IL=Lt0HX~Xf`-d6cQrZdN|@<6RNO81@i$mr5&Y&x zy-RAAGul3{PLgjdp{2856U&4K**TDep&kxx-szIGp?tbTGJ8T1PP6x;|GK@SaX8_V|x#W&*FDlli;}l)DiqT)` zHQJs@6+*QqtoXTc!5%aOug=#94uG9R@dh5(BbK)Wn7yt(Dt2BH?|CL-!wg($G%h3?4 zZ|x4Gd0-3S#OXXael{OesY5f2;(v&&{N26ULn+JlCso&?yost4hu}Ywh(-0t&>TA3 zZAH1-5|D=iBHpEIEDxQZy3xK=E9TZOv5}-n`Wg@I+`vKr|FZ{cLIEKG2)&?G5&%d# z2Ec3*Xfws&;*p~?U<_+ROQ2O6L{RpB9DAZ;bpy}_=X!H6I)1O=a8p)*!r;%O?-sPH z|Ekt8s**cAB6wRIoEBn}*1t%tcDXP$hD_;dWhb3>saL#(!Vl4XJa8-)3f#r+woEL` zrQO~9@&{gDr3*L+>i*~G^buOPItS5Xh&x`u5=JUhd7pU`IO&R=rcExJsPPBu%s4Mp zG9wavzfQHkpWa|z{dPY5ipeYxZTmJvd1S<|PgZ4ohY3hCYoH=BNGC>h|5eJ94C^&v0E<*c2JsP+Y#-2WOMvfWbG2?zQrCqYBzg|KzD> zZK#O@FHQzp<8E-Rp{4fu)m^Tr99o8ADVCeGlot@PulSw!&%oVXX{qp8i&Nf0HM%yC zxK@Y>G5nWg`j85JVTj2}MoMm+G^Qaa(gAmOn~_Gj&fBT)0Su7o{BS&1B;kdOcdTg^ z1vdyrl@eSCjDUJqA&=A$k{@2;t|f*LP@R8eSR|vBrUBzPCNe*C;rvM#G-nt8g3dhO zu%X~fF00n8J;s(xDh{nUP>E@pkA+=A_ohHZlKH(9*PiG+r;k1PY`&Xn!)g$j@FjlBVEt_bO$S zxAm8XIAP7E?W|m?!|%Jfh*8`b!>r?Azm1r`-QYP5f{742(iF4W7l0gjIkfBKx(L|D zpL6w}7`fegzZyFFlq21c>Y#uT*>YKK6-EI#?#GwfcK>Z59 z#DJhd0RvUQG(aBB4%kdj66(&6(F+ogDY?b5DYjheTmDY0KZO({P2Z_0cxZxxrBQ5zw5+Uv1tz z=a?7>}+7Ys-0|s{JY1jX4J{lU0Me-bd!c#87 z(n^tdLCA%IqQc9AYJ52xx_0Lr1AJaAo`if!8xvh=(p7fd?;`0#7Y0HBx^sP4cAx`4 zu6l4*+A6B!(*z+e!g;QTbXlAj_QZLb=E?J$@c{@12qNvIfoPsUoN|}5R0YlW%rC?7 zF4MJ@9fPqCeh{*r?9oL&_1nI!zbhq4bs|t?$EmuvErK#X0CB|P4fpI1EMJz8625y8 zD&NF8OwtNMV7G`GttJ~WXLOi(7acnKHg{Q)A?Us%i8GA4v7W~mTH(9tzRA9(Q#L_y1TPd1yUN^^daqLx=Z;*?c6wmVBRKNvoB%YVx2R^cMFTl(()NoqNw~fbuJz`Z^CSi$d@~w80YqU7TwGi0u5*uK0Io< z*6=m|w=9bGu2vh?K|uk<%ZuznJ$Bugf%5<`0N5JSpaFn@7(f6Z7-5D07-@H0^OY=N zmmLw^Lwv)GWpY;@ z83Govg4Y`UtLlTupS*(wzIw4_9@>_rbpQ*XM1~AK|HZNkReh1W+g{=*cNNKJ2>@9w zhf!lq?K2&`735DOQ^!U@&L^ac%Q*wyUvl%F_}|!XWMX^kTb|7veSknY)bX|Vm;w|q zPrTY@C~JA%>sc{+fpk#l|B$Rko^Y-pG(iL{?AE^AZ$0{d^S>8{UEII@&!a9_>0-oT z30Leq+B{9Y>MP(}t7MJLpklIFoPjTj<>YO+JNo9%I=Xt;%f2c1{kNZ=5~% z7C~~*q=2BI3l$CFY~l)O);Ry|wmL_~ZL+MQ;|+adTI6rU2x<-DB@EeCB>?9eABkc_4&P&|2H~iuXX|>cqrb)8+wMS3{Bqs?Z)~0)EO~ziYVd(YJQi0iZHX#d8!}xoUgggC+AVX+!szM{L~So$YmJKb0(q7!E|n zjEpPe03`=Q@5DfLOznCcK9IxY7mq>-^ zxy@##$BsgUd43PAynM;1+YTE?V{-h2?xeQu-nv|%vuGi8ssV>sF0SXzhhDxgRuxUi&te>qD99Xau-K6@XA3^D0wG5}`X2%?#=UI2}9|ko^Dw2=x6t zEl+#hu>b&s1Zjc}Gy?Kajp}IR6KRHHl2)f}cKqqSyFCdLxO;MIt6$pk(KsUAy#sA9 zrPW-*MsdhD+m5O3;EwAKXgWBp(JU6JU)nr}b3Rr*nw@b^S#<#xx`XESBtIw8^kA?# zf^qn{qy|AdkClbwqxPa^HRMnQ3vMVJE`29Js3t7W|q>ecz57*uTempvnYvDR<(cgV||MR zvP_9pnfnqo8pqD$Mm~Gi(Cs%Nswg_+wq;3zK zmjx6faL`1n#aO~%0phB4pza2DJyrAe%qSS|Nx`&N>>#bXYq+SIU2Jqn^6R)O`6`e0 z`A-!)Qoa<$VI@4c78P#!4s@vKpoOQJOz|bp4{lneb3!Cvl&Mu8yf8^^XD=rx;QwGX z*hweoUZayJSL<5h*)b-*O)RK?Km+1G;U}vkt+_oFl|L+zhj3z`dA9%!gcs_BBK(YE zrZ2oVeK(0%Sfj`4#@I>Ds>-4bR8Ekpl1>H&k-bx^5sJ*jQnAoUJ#OsMkSFBFM8M?h zx5%)?#E~tE5HAGK=3V)T{QJc(F^P)q9-m6;Fb@0XMa3RnjuY|(#pDn)oMD_U0beBT zbBce+&XablnxSn)7#-9l;a<<3WD&&BvCfDjp>`q>Cry7RKaOJ~jeB0i+n4q_;4k3xHqd=SeT*go$pRuiB!C1#0B^w6aX=4a zNr*~07J%{xxwfKE6ke%>@l+_Qt8a`{@N6=${d+aN^&M|3ZRr?u*)W80M_8QG6t&kS z7FR*4;IeG4ul(|Nwld^B&uqBOU#2xY7qxry7cmdp>>9jVEiY8H?n<1h)p!D6?6+Pr za0DA;u*S4Gt3r~XVi`CyXyP>bi-V)RSR?jp>vVP>A+N!+Mo)Ll9$n=3uV<58TjVQj z-?*>tG8hLpC3%aK%@y1BPGXsUK>);*`tNR|ROHyt4|#_$5#1?B0(HQYasoFtAt?+J z$gHn5=)4sLGf$D0h?lEoA)hv0~J1$P?IGI(ufctFx~o}7-l>KRTGmywA(E5VoO>?8sr z-aOuxj@WRNb3q{1@vD~|PrnA_8Uz1tAg^eV8TH;;IGqhFoJ7%>(jy3w77P#D7r}P8 zqe>B@kj}eruiH&n*&n3z%WzRJhVzV`&*y5+PZvlZQM&Wo_*3-xEv^e!XWG>5eyQ_i zZ}3Q=#w?f@HkL!c2Dl%7<0l0TV|ql#C5}0;1z?Qr(?6V*NdG1FNtW|j7sjSc?7C|` zA_r#MJUb+Z|2T~#^acE=_1%uGRt}12BYbcNz8lF_Bm+sGf;Sd<$+T_eyOo4!*U-=ezL-{o6zl}ugFHAPSBL&khJO-G#~IR`fg%n`H6uX!+r;<`qyXqB z4>vwnVuaH8Wb=8>x7GN6^tf{uBcD&vZXWS$yFZ=VmQ0^TcTHT`JYgaE zSZ*s|W}Za0Ro@-~P`+rWUcx|Jd1cO3cJgRaB`(7mgQOh@iHI`^9(4Y1`>&T;5g9qjS)=@Bh1;(@4Q0f`iwPMk0{fh#P45 zDbBh*c4-fIYay!mI28i6`q&+xZ71iZVBL*i@?&x=04`m~M&N20c|qe$sqIkYN9@E! zSE=1m#J+caQd@jjQ=v4h$pzlhTDaaEPjIwetUb8O!~lIGTzLwVb1;S(8&Sr;5m|fq z0M{W56pqHsVDA9eiNeMhk%7N?3lxLRI<4gD5v=B`UCh)rX6H#E33$kuLXd=3$q?gu zkb?J|1OYCPLfGRY}Bp?!Kq=cz~R2-+JZitfr7ej7R z#*Qp7n(lt7!x^W5<7N8%Ng2zur`$>J7_^9T)a?bISnV4uyH_W2H!bwBbBSAIVG(q@Xd%tIuT!0hX~uBce51Md|VZHWE5_Hdv!9R zwuFomzRjDD9j$DARI*9;e={sORqR zwH-kZNBX~qlFSiM61v2tUHRkjua2p$O-F96dw9qjx8`0?F9g@LOGy`0aZQLm#w{6r zPbuxFBJ3gri;Ij+VRT_-2%N#lpetM@`k^`l01c&#?#^9wIB)>qsET^1F;Fafk81dB z!S4P`t@i#Cx$Hh~zRssJi+^wUAA7#e$3cOnQ}GajMycwn!MIo-Ant)n*l1TINj;-2 z(5jr3wesFh9Ib2}Vz5M!pcHyn0WjjKYnqWk+mk4Wr|RqKbj9zkT;%+>CgJ6v#ao|# zZPm)`L<6p3gg|nTVkpA0S!hzy*lC(Z1vR}T7wYq3WS9Z~{is6~l#F5q4WlX$kEGne z*<<7Wfxd)h#?Ga3-yPaN_1E4E^F+Io@vmEHnHYt3P&f~4hZ(0lN=C&)#D)^V*n+$5u&C8XnL(}t$sepF!!g55*U)hxXF%ra1Z6`70Lu7b34vgS86cyn4d6_&0 zvq@NDtZZFqUs}O|g4_>9Z(IjQ4lqi9(9Q@8%<1!ZqqXb5QjH{ajkx^i8{(^X8}b;) znU{HSFPaxd^pfjW%l_N_%}wu?v$~yArAho1aI%}0iTNLB#wJ6~5ANYc^+9JbU288L zjNI$eIW0zVO_J1GOe10*5{W;WIuNaA%|@s>*_5s6U{M1EV7Z<>yq#17tglJM2)Y>) z`vP0r+AJ(rmXy=$AeQ>IJFe5J^(7t)h%ObwF^mI(Gh~m|vx~^3Iyj_&CzPcB?)wl%;*Xu^YjE;7+&?Woea#0FW3mmf_+h&4j!4bc|TVr$vk5tBQs*8i) z&Aoo%M~eL2f_!;O6+h-ZQPieNhAi!LqN!PsTmF|$>9KjYsm;IaT^NfcmMy&p0VS93 zJ(G!EIMwdi0K|W(qXaRC)d zS;eQamq}F+jGJE6@{a?Rb&+g}9n-$<;r{N^#H2*e1?c_apuh$JmE>oL z7zO|s0Bo)Z0YDnAFd}8%KVRO*MKJ5%SR>h@U)@#yNM)-f#KYU3$@r~L3?x!3)WzG6 z*$N$|G`OltwI9-zCu*%?KN&zI5ino^;yVl$A7yK#^yh+KIXzlaG^H@|gcUlT?+FC8xf%e|l zs(>o}v>6H}cw{{g)tu){WKx6sm zdsqVpd_*LZkyw^nbSmP)AH^pPW~HBd=whmsS-)&yUWxO9jXGPP7`?#)8y zbelR@UI!DKYbS+PjYllxGAj(rygi@+Y>TZ?xlMUJ1W5M`{r{+_F9Vzel;4$#+)M}L-4+tmn+ z$2Klv2&OR(Yv+#NV6PuXxX5J zt(n#cbN-7Lr~|^CkWtU!Cjxbl@N& z)!6C(uiw=~z7YdJaR5Ld1R(+m%13?$SNsQ8^XC4&KQlt2sJMEScv9vg;kBaZs_JVu z(wD%ic?BKB*Lg%)X^EtNKBN3&eX+;FcNmaiB*NnHd?c->)RHiKpMJKC zgz*pPe*snUDaq{hnmdQq?$OcQYtD9r(zz=A;YjTy2gafjK1au9cy?|h`xgnZ8~V(M zf_iYk%dqg2ac>1A&=UiNabh#DbSkmPvL=bO-aQt-2(7T!sw}yDnp$b{F(}Yr?m|^Ed3s;*&N#LNUCPA zS32xbe)EV2Z9ptKG;%)FBFK?-M-cq*PZ}wCp|$70UK2C3L){Bn&DZ(PkWyU4vw=zj zOUM;0(U1|DbQ=@Lo!7hQSq^z{d7J;aF<6w-Tcjj;-aoS?X}qeD!_4ZgJciQn)vj^q z>t%ZN3kU0kqR4b)PXSO^Aly~5{i!@r2>`m|g%4+hUHEsdGcJb*-|sCF+fqkYTetAi zhH5>`-E^^i31gdAK3gK<^o)uHTXsJ77Os3n*@9)%*YjYhs~pePh0e3i008nVjE#H_ z)*ty&;SZANJ&>}9s*QZd^!D+9hDi_aL?&p|%4SI*901z2X2QtNG9R@v863+gv(d#^$W7q0vzLiDro-gS{0jc&1{H+6sGI#z&NQG=K(pfJVRQ0Uba> zP!M1t-CSB>(*9km}S&Tsc~$3eHJ{Qc!OPb95QCL1oeW0C0ltier6Cd7c4|Fh*k@FYK?4G6gQp- z?7LOm&Ei_f-fwnYYPuG{obRoo7^71CQUg@r?NO|r^0)qC8a-i(|L-I;Huy65ah`Sm zGh}Ccwj`r}%5CYhUxig0d% z7PEibDopRbiMmDJ@pT<(Q=nf8c6L~bHPQWsB#rXc@I*I#^b1u zLyM)3Q#liD2nw9HL5U#-H*pPHYB?>4u));frLZu2ja`M1a=uG&9QzgAv>iwh$$^cq zZ99iv7PnfM=jJ^sOO=rn9rR&T%v3_CI0rKjZDa zenkBaug(62Nv`%HA%Fp{mJFZFt*5IPDg zd_A)vqiY+PpFPd9l7f)YP+2y%7gX4+0-5(7J6g4CR@KH&5OIXyMH)rq08n@4qyx(C zA((O^AoLIpPxK|y95TW~h2r#^f602_nAXsH{V(!p;p}~@?yqZ;v0hbg`zqehIufp* zR4l?yNQr^?ya=pWBMrB6Rge2d<`^^DL8EeL`ha@-0^+ zhEU4T4e4V{glzj3Fs6fN@A?F`mzE9OHOBst+w=NckKymNz)if0V71(Cpo9IZIUvEp zzE}Orf-t*J?Q*5-G@@RETur2=Z5tR@C zVSsDXBn2t(3nyW-wrR;KZ)e&2j++YcSnl44K%wgl%Zv? zD-coVA6Skr%e)ZHNi{l`aBy5#34* z6>cK82LChu3OIZbB{bSnNx+mH<-$dt;Rp!<^zKYLKFJ+?kax_aiqsqdlU24gNp+4SFuF`{DS6>MT zw!yDber}a1OM+x!nQxVUd4tL8md-Lka^7 zFh*M`nh7iR+`)hb7yw{20BR@)3!!$_gHG7xCooW6Wkx{6mo+XiEW%U+P`51!P45vUm`q!)D$YATD@vJVL@sWe;AG6 zPyxmy5t;nmbA+l>$FAo`+3Z?g@^{t!+qxBl^PTRgK+_Ap zd_+u?EJ^Kw1DCtyK3iTGBZHZ85IIeBBS9Z)Ai&A*XZJrd8P*afzeBe1Z4URkcazUd z&zXSMHc9(04bu)J+hv%k95k_3n8}Ea8=EBSO?>i%;8+D=f#C4Wffn+e;2t-n# zJ|i&&B#kv9ZH~|oQ|8(a zs>G1)OO(}oO`E#a6~(GXltjTmd}+8bJX=cDO_Cp+DkmyJKsDv&at_b(AHGx66dW%U zqC2S}RmPcjI02C&3hwXFSV1m{S$PbMRU_z9TpOF!o5W(eq*p7k6Co zK2))sGgrjZ20Z3H&5_>!i_@$tNzu|rOvk;J`Dr`8t`g=7K;wR`&!Vp>*<~&>&gAr6 z2sTJ0goGgnYhvKWW!t0t@(|DMj`eiOwK%Jncx7CSN}%g7-3|MQEQJ)jzhN}gAuLF^ z2BKUU(k}XX!g3wGxu=_VL4%6IKONM=&r#gh-^+JN<%POeZ?k|HVSR>Kaud#MYvQZ-fjfDP*Fu@GN#X~-J?QfAokRo(<=V^ceU+Riy zRHtr(RomXS4mR%GZXU0xZM5m873%hDsv#^ezcH4b=?9drZa=|ub~p$l;K z@Ba0lOFF#^o9M!eoq<^b%byLEAIorE%(%0|K@9-2P${wwcf(6xk zI6B|i^#uJCLnqJ={Z-KXc*{2_%#YW@GyNg*_;wWG?qP>$D7C~^8C3K7?aNQ@6le9w z=@S2XplR4>u!0Us;O==oDXt{Kkf2F_N1V#xPx(M2H4=817zd3nqux?XqJB<6a0FTE zC*>p+P0p-qe8 zRX0hbWhmr!rS^$J5b8NSUFqct^U$Q2iDjHP2|j6d?QH`f$*In3Dwj8R%pK`~+vp_{ zV_I3_Y~Dn2#T>1XrWYM)Uwwfn^XEWnHMu(%m(B1x3PpCL>>$L3C6#6_5N^ce zIuKS|iHPU$bTnY-s(_h9Q5NhOB{%W;muv_lqs%2rHTnW#Zkl#xe#P=)tw6h9(2q~uawv13D9&)MBGgZE$WLXju7L;R5PR$^KID# zORQXv2pY|HP?Q5v!I5csW-&qz9!YobHGlCf?T`To;^}d)r^d4AeO=ccfe=6l(*8b= z*{{Y!>ucsA2mwRy!UL-FIoh0KsxZWnzb5@L8xgO0)(Wd zl7yrUK;$hkQqs~y!4wq%h5!aHdhcTx@BCcl=2}s4sp7|jK62%@sacfk+T%IiN0@r! z^gN^yG`XEo85xITE~udp7k5OS+M({$*h||`rHECy{KXm4SQCS7*glSkv-NSN> z{Ut&u>0$FNO+>PpeN5+2BmEB0Ht#i`z{Z#ntJ}sIhfM749ywdaiw6N1{9Sj2`Ea$H z6^NhAM#@J#Sy!5EMG0~!Acno*-f;^Ptms@rsQ*-dX?~vMmK7EXGO|6aZfBT`@*|m$ zr#jU)WHd+PASB)FfFPXC3mU{r8lHBCZGG!z*rAqg{^6;gk5|50nz5Nbsr`n3{>b<7 zc$GQ$(tvh3BL+~+?M&lPcj7M!B>_Pf-IET1RP4d|k@8kwMbesP^c=gv-fuyREWgJ4 zV{J#g=7yj22r?S*iX;1@c=7pTT*$Vkm_=Lm{LwxYt_@5BN!i~FyE~nB_y%b>;^Ij% zEyNc{@@!FMUaR-6gg^O2M*;F?=%f`?xO&L+P_@| z@GU6Td!mtz!Uw9yA?9XLh_-Fz^!sK5;w-U=v`8qtx{m~DLwHlpvDo@%Ka*q%lmUhe zFD9nok%O&o*2WACz;Cf*01z-uU?X*pL9_A0Ljth&do4CF-4gJ&J^$X+P+jJB@M&*j zZ^4l`+D)Tfqa-grQO*Q}Hco4Wq?Dn645Szvl+-D202tTw+oU~l3W=6je%2@eY*+xt zU>D92p2B72c7OvJEyn;F5CSQ{L;W6O>z$863rTIy*`n*YNPZv?=aY}`rd8RC;vo@s zpF+#=xUM3Uj0`_f29MXcL{5y=1aeIZ)gj_E#k@^!mOc^?GFQxD

Z-Bw7bgi)C^L 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ⅆ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

Id1?uhe8r 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 z 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 diff --git a/data-raw/DATASET.R b/data-raw/DATASET.R index df6b4616..f62d05ec 100755 --- a/data-raw/DATASET.R +++ b/data-raw/DATASET.R @@ -102,24 +102,17 @@ seCombinedGeneExpected <- transcriptToGeneExpression(seCombined) seCombinedExtendedGeneExpected <- transcriptToGeneExpression(seCombinedExtended) -## prior models to use for scoreReadClass() -#se = readRDS("SGNex_HepG2_directRNA_replicate5_run1_genome.rds") -#defaultModels = trainBambu(se) -xgb.save(defaultModels$transcriptModelME, "./inst/extdata/read_class_ME.model") -xgb.save(defaultModels$transcriptModelSE, "./inst/extdata/read_class_SE.model") -defaultModels$transcriptModelME = NULL -defaultModels$transcriptModelSE = NULL -#saveRDS(defaultModels, "./inst/extdata/defaultModels.rds") -defaultModels = readRDS(system.file("extdata", "defaultModels.rds", - package = "bambu")) +## prior models to use for scoreReadClass() and junctions() +##to train new ones see update_xgboost_models.R +defaultModels = list() defaultModels$transcriptModelME = xgb.load("./inst/extdata/read_class_ME.model") -defaultModels$transcriptModelSE = xgb.load("./inst/extdata/read_class_SE.model") +defaultModels$transcriptModelSE = xgb.load("./inst/extdata/read_class_SE.model") -# How to get pre trained junction model standardJunctionModels_temp -# added "saveRDS(junctionModel, "./inst/extdata/standardJunctionModels_temp.txt")" to junctionErrorCorrection -# ran Bambu with GNex_HepG2_directRNA_replicate5_run1_genome -standardJunctionModels_temp = readRDS(system.file( - "extdata", "standardJunctionModels_temp.txt", package = "bambu")) +standardJunctionModels_temp = list() +standardJunctionModels_temp$spliceSitePredictionStart.start = xgb.load("./inst/extdata/spliceSitePredictionStart.start.model") +standardJunctionModels_temp$spliceSitePredictionStart.end = xgb.load("./inst/extdata/spliceSitePredictionStart.end.model") +standardJunctionModels_temp$spliceSitePredictionEnd.start = xgb.load("./inst/extdata/spliceSitePredictionEnd.start.model") +standardJunctionModels_temp$spliceSitePredictionEnd.end = xgb.load("./inst/extdata/spliceSitePredictionEnd.end.model") usethis::use_data(data1, data2, data3, data4, data5, estOutput_woBC, diff --git a/data-raw/update_xgboost_models.R b/data-raw/update_xgboost_models.R new file mode 100644 index 00000000..fa4c5851 --- /dev/null +++ b/data-raw/update_xgboost_models.R @@ -0,0 +1,36 @@ +#download the bam file and make sure you set your own paths for the reference annotations +#change to bambu directory so that outputs are correct + +#aws s3 cp --no-sign-request s3://sg-nex-data/data/sequencing_data_ont/bam/genome/SGNex_HepG2_directRNA_replicate5_run1/SGNex_HepG2_directRNA_replicate5_run1.bam + + +devtools::load_all("bambu") +annotations = readRDS("Homo_sapiens.GRCh38.91.sorted.rds") +fa.file = "hg38_sequins_SIRV_ERCCs_longSIRVs.fa" +sample = "SGNex_HepG2_directRNA_replicate5_run1.bam" + +#Get transcript discovery model +rcf <- bambu(reads = sample, annotations = annotations, genome = fa.file, discovery = FALSE, assignDist = FALSE, quant = FALSE, verbose = TRUE) + +defaultModels = trainBambu(rcf[[1]]) +xgb.save(defaultModels$transcriptModelME, "./inst/extdata/read_class_ME.model") +xgb.save(defaultModels$transcriptModelSE, "./inst/extdata/read_class_SE.model") +defaultModels$transcriptModelME = NULL +defaultModels$transcriptModelSE = NULL +saveRDS(defaultModels, "./inst/extdata/defaultModels.rds") + + +#Get junction model +readGrgList = prepareDataFromBam(sample, verbose = TRUE) +genomeSequence <- checkInputSequence(fa.file) +mcols(readGrgList)$id <- seq_along(readGrgList) +unlisted_junctions <- unlistIntrons(readGrgList, use.ids = TRUE) +uniqueJunctions <- isore.constructJunctionTables(unlisted_junctions, + annotations,genomeSequence, + stranded = FALSE, verbose = TRUE, + returnModel = TRUE) +junctionModel = metadata(uniqueJunctions)$junctionModel +xgb.save(junctionModel$spliceSitePredictionStart.start, "./inst/extdata/spliceSitePredictionStart.start.model") +xgb.save(junctionModel$spliceSitePredictionStart.end, "./inst/extdata/spliceSitePredictionStart.end.model") +xgb.save(junctionModel$spliceSitePredictionEnd.start, "./inst/extdata/spliceSitePredictionEnd.start.model") +xgb.save(junctionModel$spliceSitePredictionEnd.end, "./inst/extdata/spliceSitePredictionEnd.end.model") \ No newline at end of file diff --git a/inst/extdata/defaultModels.rds b/inst/extdata/defaultModels.rds index 1ff6e8eddad58072cd66d4b4f7da77722ad26847..052e103401b3c0615cd64d850da3cda5cf1a9400 100644 GIT binary patch literal 2391 zcmV-d38?lTiwFP!000001GQOSY#c`!pWVH?J)i$3KBu;U>f*Srlh{`Wr;voWHl;xn zA^xO^;0d(8+qFrw!zkcgZB9jtjVyID)Ythli(8&DDFjirG zPt|7K-_>sG&tLhH^1bhDjO_l%+`I78H}-EX7Qgsjm63srQGj_4FFx*urr$6-;c2Lv z>3H_e;^!Z`x>Q?Ts`_|P#uJV`l zKfdth`X2h%%K6uJ*Y}iLzxsu(tnZDL|It44S%!}S+S8c+$|Fy`_1=rG|LimT*iwxY zpY)CHHZ63lEiZ(E7J4>?hi|wyMW{7wBM5*StyG`%xjCz696&A-#z#O`Vtd<;Fo@pr ze5Y$00-^E^0l#{<{Y1m_DTG0!<+j^im{32YsOB`E{`S#Sj5>j7A?IB8HnrXncw+P-04zGojmcOy6oy zRk)6UBf@rlRal@$FgZw~e*iN}#VUgwBMr}NwXB9^x?#Y%spPwa=WexK#xGILwCdQf zReNX@L=BpQ2X<0gD?I-_x_OCn5@8`rS*1iYC ztsINd@Dz(WBD9v@JYPRwUlEq0>U8n{ zelqrSl<>JP68*Co8X4IPX{J#fNyuT?WG+RX=X8`m-b};|lH10GFx@vhb?h}+YvJ7q z{fR-hWSed~ypgoTOp~>oKN!32<;v$VQKW*|mV2|+b=jijZc#a$Zk=cqcx@RrW|x)= zB-G_VrA!ztx9Jk+G+$~Njumeza^S;9XYc0cFfSU+G+K?NH2r}3Rn7L=@+tEog{ITV zSJ6DTsVDR}!-s}hGQI!i_ha`pB7V>m$~Nc|ux>sCrkaDcS(I!+tFdViI*HSR0ABiy zppOn<=_OSkrXc~!QgD&B_o2-6{fN*vmK!m=ddZma7-JIN3h=m_m8ZcyY4Ln_k@Qy> zkVH}$ye7VxWEAFuZ%Y6(ZhT8sg1WO{Ny-D&&M_ z8AK*@#B3{|-g>4Ea^_-Ho{4pa*ZnEh7SaxjXrM7O!mr9XJrD^DlspE@yl8WWfk__( zHxT#hNpc0It-u%*K6gR56mkqN3N;a8)cesGuA%HyM^X_|2@>-=D#YewXi{7xh1)3^ zvDP%V5Rbi4NaXZOus4e`?2-9UcR<*jVCGk4a-AtZgc1yrxsf3WHY-pbhB6s11iegv z&X;f+hxQ4kKdCfG3z@Oij>S;qa$|y&NP83s$h0dt)7FBnBajaBq;)|Nr)208 zb2heubE8gjiH*5;5#2l{3Mb_ulsWSbM*eulX+I1As4Ox+;zq5_J71Z6XZ6p3Nv5XHC_$cOw{Ltqkfv(6B4I{X zC!wybNotk(r1E~~ax!8DW-*bTTI6ch40k81z6jjrIIE%T*AvnKleoxyUy2SXF@z6> z{U@Y)xx99d!b$|s0(ua79f>d>YZ$KUg|(LDHf!-|v=*D%a@(ZXHG@mFj%^x&SqnO5 z!)oo+0?#q~N1}`4q8AAWDaIY{ToblPC^kHrs%JCzB z+o0$A3f>?m7mh)?M$*ey{(7QfxmIXlP&`FD>oG)}ZqEHhrDJVJjOQO-qvhXBo%-R=&%N_%+TQtA_|hxCTtWOjUh=I}{=j^{Dd?4cBP4i*HhtJB zMM;w``n(~yWsdI^*#`c$v6nr&i~uWokG=udlKopFI5h>FJ;7&-Ihv) zB@B=C8H7@h*5gzR2I!NLx~in^UY;PP4xy?OL{%(5;hi8Y%5Sp=CEMuj@7qKlN?>?;Rke*J=eORiBRegns%YTyo6thSy{U!RifC1*C5(a6?RAio!Lu6xG;XOH3#i5)Lh$uXfig<;Wl$XhSHKy?6>pj}c5Z(#l1@a!g$;{PsX Jy2ySZ008BlwW|OC literal 603 zcmV-h0;K&PiwFP!000001B>8dU|?WoU||B1tUx9MYiNj@t_1@FlQ59O0;KtXG^73V z`Nam+O(6_ml?;qP8BUPmyu{qpVjx2RNs!SHNc@BAyghH#u6G-+L3A?y$Dx=RWF0$H z6N~-(iX$(69{zHGjn#F9P|Z~bPPKAj&t1IxzlYUzzSQGKGmHgl7`KLJUP)?Ea%w?| zCR9kWAU~&4!_Os1N5NP}p(wFj!B!z8DAZNckdOi+LJEu_E@$8cdj}j?U^a+mfQmse zGc+(6Ain#+wQ6yn1B3ksX@;LO8zk&M@Rw#AJma_jz>&em?iPq-4oE)}IEE1V8SSdB zf10&ty$7n@SVM%huqd�>&xGEXyx}a+piS*F4w6hAZB z|A!_N1~mH_pz7F=b?4-wS;C%{UzA&#lZd8}u@35MxVn;x;N<+GRH!hrS{6|3pebht zMix{E99|9_P#2-v&J2u8AjO3gRsRqe#XIa!Ej-EjscC7M$(gBnCB-PA2Vt`T!z?pB z4=K2y2{R>4uPC)RGo>^U7U=91IjLo-IdD^w6LWGPwlbmT5pcj^WD+L(d$+GvWl!?h z|G@C--hw16G&eKh&J=9G0MZL~MN7X-P&N}H{i38>Ci@S3X0s2kRJH%WzW9&KPfaBC zF#WjFCli&@CuZ27B}qn?G{Q-e`9DOCWaQ+6vJr&C0p>tG4gjig3G6cl003X*4pRUC diff --git a/inst/extdata/read_class_ME.model b/inst/extdata/read_class_ME.model index 01467903d153b0c360fb9193e01bd4c660b17772..ebd50d7694324625efd84b98eb1cb4a3de6ebc40 100644 GIT binary patch literal 175994 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%0DAXZm|xUdZXTlkR8GxBToY{(Dd~ldt+`f+(I{
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�L3_`$C*EFFKD@-vKZ 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 literal 157274 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 x;tCz_e~yy6_yn@v%~@ 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�e^Kv8-J0p<(Z-P?>hjcn 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 C@r1Pi diff --git a/inst/extdata/spliceSitePredictionEnd.end.model b/inst/extdata/spliceSitePredictionEnd.end.model new file mode 100644 index 0000000000000000000000000000000000000000..206d96292e00f25e883fa9258d247b0820a99535 GIT binary patch literal 109970 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 ~nEinE{v^dbhaj}f2Ri?5dEiebxO`{b5 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 aW2S_So*prCbW~XQgo(3AweD667yciE=uP+l literal 0 HcmV?d00001 diff --git a/inst/extdata/spliceSitePredictionStart.end.model b/inst/extdata/spliceSitePredictionStart.end.model new file mode 100644 index 0000000000000000000000000000000000000000..f40cf8140dcd67ae696ea0b78f7fbb72d8d302c2 GIT binary patch literal 111626 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 literal 0 HcmV?d00001 diff --git a/inst/extdata/spliceSitePredictionStart.start.model b/inst/extdata/spliceSitePredictionStart.start.model new file mode 100644 index 0000000000000000000000000000000000000000..b4194d45fb132841a670c66b8a1e38be834622db GIT binary patch literal 100898 zcmdqK2Ut^2^DiD16dPd2MiEd{R0LE+lHEN?06SQ*gB1jOuLLV9DkvfdDk7+0!-@z5 z#NM%YMaABG*SoWa9CC8JzxVrp|G#^G?{o7!OER;wGqZd4B=b45y9^E*JzOS}p|bQ3 zyh`bna(bVk?*H`5tk}TdpwR*2r@4oW84)yLV$cwsYa<3v96xNBGZg|S|5IP!o3Ea8 zI`8#Z|JOhMp)c^OG%fU9ll=0xf_~JLp?{2MF{YpC8=?h1%fM%l%W2aH!8=R@lVV=? z=}Q%$t2`|gig|a}9g$Prnu?UJL<`lap>GK6Ri?$17SJ=i4o1|b1}?NYE$~?;i^SkZ z65QhsKK1*0kvK!5G=l z(ts8i51A|v(Q(q)QreCdXzP&~C5N%Ir==k+yqp`MW2tFGX$M;Pe)wY;-^R2w5qNHd zjM+*h|X`3zWSSLvel9t|Q z8hu|VPXYIyKJQ{hc@DkzL~>L_1NWo8Tx9+yExjj2a(!o|%HclMm%DRfse<0OA~~xm zHFMxz)|YFyWv-Uq&my@F?XD`|9@m$nq=w$}A~`yKIq*H8FL$gpL*&mV(~*BDn(^V+7v?`f_w!vX>N?ddaFfdJc@Wgj-Rj zv5Qv99LB1X(VJYL^Qz5L%FGMZt&P94dfEGGoXlsa`n%s3Rv#TPQ%Ub^<*E+$jCQ#r zSITgE<-r-gynL)DksZ6C=3IXBbh;0gY5J&Nb^6ZaH8~CFZQV?nd*dLZt>4xnGR<9X z;ia>Tt`P8;(h1!0oVI-X(Ps4h68F~cE~A@Pj^JdPT+V$+7cKZJ`w&KCc_WlN&fezb zffs&J{mSQ037uf0{vk2&Ly(QK`Q@|Zy9YJQk(iyLpdt(5~H8gUV!N+kmYnv zg8aqwCzM`H_J{Og^|FG-l+Na^``l&p1@0H6t8n!vEP}5)nQWdVr5(8C2R0%`r)S7z znv>kybN3mYc;vi7CX2-hcPBDh69(h7hSZ*VkkNS)ms5Y@xU^d~xvV|>$*Zj_TkSKe zPd{6iel;d=>%+D%T9(%Y%f|Llw}j&Bv^ z@t1e>>Z=n+-*${1KDRcO$wElWN{3m0{4L{XJ3q3eN(`&dF0+QxW3j`|4YVJ+*LJSa z)<>*9b;}mo{w;p@b}XaoHMvOTW2sMkoPsu*(fY-tRnSE?zIh4nX}tw^@BMcAE|V1v ziKp)xe3t(H0L@;SH-N2|xBd zr-aVK8Ke5?wXe?QEZD6luYu2+68S*GZIqv#Wr6=!?+b(;kXCGtQT(5o`31HV* zr_q9pzO`Sk{v2@*)4N`DKGONc{4GVBbk{Yb?`8Eq|4)5{?`-g^G%fU9)7$Mm^j$;a z0GSajG)~sgH`YJ;nfVNIe~bH@cU~lk`>*ZF`A2boJn{NV+@FrYkN+y}2VcA#XLx|G z|0m=AX&qiE%28YTzi}?lpKB>k6!&jx*h+3f<*X>*nilGphQ1-n`!C~uI{s9y5SOQN z_Ow8pLHka5EXMyY<9--}4nMakXpArNuT125;K`cO0$6~zk%u7eZ$@bYEFjZi0p6}O z?msuRNC9!b7$5j!i2L=&W#z`lT8R50CIEcE+l^##zYZVpJZl2iR)-IC{iQL!NMDyv z_AKrfZC+;_QDC&lf~q zR6snhAG<3Sl!q8!ri5-#hF3`!YS~{VcLuy4EHI+~fNF*uLR{ zoZjOixyem00#78jF>$;EAGFQduQkL6@oAH_P6qna*B5zEo=BhTyv-6Eu{Py#mLZNf zA9Gyc=bhj=%*@jB!ugNv_f|8hq4G&#f3-aDKrU4)%X?|B?7icx+Njnc1hj0|2GVk? zuX^AWEvv8287l+(xhS`(|7f9lLfQ@P{uQ;dJg&pbpD0JRgdSHP-g<O9DO9?K`+G|W!BQMue+=8yD zjLw_Uf}1|&5I5qm6|?W3ZApTw&sSOu+sfOcJ_R(-Rhwy#3be_T`syZ!59flvvRAI; z&yq%}9+nx5_WMR-)!CJm9S~RaPEE=tX6A(Hm(_T$cs_pw7tHbU*LN<&{hGUR z2d0f@@;#H2@soE|Ih!+%@O38}d)o|8I$npHd2=iR8eU6B?qZu9e%?_os@WOY8_vYnie?*f5Dkz7q+REyojeEPQ zB)C%rMn8^Qk7`#KLB8e>V*P>o-)cWD@mUtD-<`J<9sE53@4wTA(WVtEF2QeCW!NYUWbmI{$zSDe(lQ;7}i)T0D$CK3? zbtK!T?qu?s4UZM}?rvPm^^0?%ZgsU+xc~B>#AVtc<`3{J{+M#(+wEcU2duTk_ux=Y z+pVi$@9@=&T=KdttUbtI{bI(oIow#FpO^iNJdz>=`9XfMXi>;BVf;K_)F5NF6G1+| zbSdTGw&?=x)y)cz+VP2v2k2ke3X!rky#)Uv-$x_kZP9|h@$(yF>jkrf_9m94$q`xI z5;}4qUVo?2|F*rVrZIP;_9{VsN7LoRHu$9=zvXKJ+Fp~tp5RYrY8x{5#%ng-KtJqq z1Q$(gCbU0f6HW%XC=k@at4U#f++goaLB6xkVlppzvrs>!@@M3pzeea!qoNxqEO4<< z5A?8II|P4~;$DWNkaV(5ZtU-}TQIvePp*m$xpHeR(#PG+owNpe^3-At!Q% z3HHL>tB|X)ON91&>uw|4UGuVa?Wb%rsgDyt^yk0$50Z#@u9ZXK(IX8T$FvJfNGqXpV7e!7m~ z2PLIdwD9BS#_|SgN&_z7d3@eL9~Z1e9Tku_(BT5!29F;)(suAnpKoicq&Wgn{8kja z4RQ&hcx&d;D{{yi=x~AVelx@w3)Djx&d^~6-mWxn5YT5k!x=iP0R259ug7pkcWS!_ zEqq%GLNSG=C#8D{Jbw&0Lq85JiceKo8uTOe$94(Mm=)APYh@sJpeS2Gc_Mvh&)m+j zHjrx)o};Bak=)c*AzB*)xnz?h;ECk$tgkr@4CE}DRhCnpNbbSgK9ama-CHw&CzAWJ zD#3$d4~_m97|;HkLwO>(l-P?BJYqdBPHTuqsx01;L$QZQpZWHk9)@@%qe%}*exbE> zSuMpVBD)3K2YJw3f=FMtgQgNZGN<`P$R&v6YOjlw;E^%O-?I#H#>}W?3PYT6bLuuZ z#S|iay;ddxPvl?H9F?M_f!v1A3$>IdlAE;Seh$SHB7L48S^@SD$xRHIn?t{EL~^nz zTOfxalFRg4pZzg~^E`Re$n)u!i|qFu_xr%DuG3DvZa9wzWb0pXo(|j8E8g+H$Fh_} z;(N|XJ!-?oT&hmyadSNvbi__+J>rBGXy4&8xiMZ&$}atXGJP_S@}$D1O=`CR{PS^{ z=02JmZ>etWznQf+KXr}-$3!V@7S3U`&sYr}>v@3tn5tp4!z&9in2X}xTt3e0d*Xy< ze%`@Z#PRXN)vkw0K5ua)-tk#oo*Y~2uDp4+Bp$4HAyFM2Sb|Sp*ZHcddOnru zm+jh)Te?+H?dr3R(PKYqNYU4+%3$Xej2^7Kg-@P$;06b*Wc`!9I;(iy)r;#JxrWsr zSlSA|^JvWdUaeqs1n*>bWBxFdmvU@6nQ=D%^^K;`j_t^|(7Dg?m=WKTm)C zs~svzU5%$-EQ>&X?4OA!^LaSwk9hpjG(t;u4_MCK`IW)jr!qF=4QKyl1Cw{!y%dLh zpU=(mFNw$cPQ0nio|?k^@i(7?>%V=%mF~rluiAGtZrULeR|$H+#uJAw!Yi9kP~P=e z&Ezd^W+Ttr;bcP=A20h4+KoCLK0$&WdkXPew}Wn+qQQD5KW8zAPW1`G&yUq$^yBaI z(dl!oh?8#=^EYwYZ8U4e7cxmToYij+yo8)vt|qO1FJtzHwV#VP<0WLr{V*oq|KMU2 z{;efxc4r@}FQ^-Vx?MddjBvf~PG`Q<|8an%|e z{^tWZsZL<}2l@0Tb8M}+ko%Pd{acf65Jm5$0-chwjT`)v$Jd~vu<DagwwJKHiY;QVndMYakD0(ynkyQRH=&D z52iE2sv; zGy1Wa_0_G4e>Wcz@qC9UAHv7&fdudj#22o#@H``q@?<(Zql@_|b`ixT1hG(EatTg}JF!xNQ(~H&lHio>)2;wd zq;GBPVM*Sk`r|YyP6;xSPR$Gri4h`3E1FXaBsb>ev%nxc%wF(>(6{F$;BpZYIW zSKhoDz7AxvpDEO<@$zq5W0R9} z)s=q0IvV=Q`-;{#_^5iz@y|caHJQY_;#Os>^+={q(`P!K8L)v1UD}(`^G{{szBY@v zo)hAE|C%*M7e8F$?th=n^z~aDK|;!1;Oz2PN>`?FN=H{aS5WppFrT+aO*+4tt-iV^ zL7;bc-KDBCE}rR^U036qDaNXS5&ZN2!ntk9p*0JY9(5M5`p4f6;kx-tx#mfyS^sda zs%YdRd(QtMA5XfDZiJWKsmECs)MWCRoE5Gf*NwCGs>J+tirzZVXZ2f5%`l#KmkfJ|8C`D0TwIHDF6{5hdAbF%@yT3L2B+MAhr6uH z`68R;h?a!9ao@hTVE$IW_ZwF)RgZi6@fedoQ1uF0 zHscPN6zjnB(V7xy*lCeSh23k zx2}T)dmjb{68k+v1iEo-H)2(gA=u0MnNEUNm*Cr4vK8pj_3o^m#u2hUI>+gIS-sEy zQy<}X5&WWY4~yac>AsG?;hFzG`I-N2JkvjP#(yiG*?2x(f@cO6ZI|GgGLP#01<&|n zzRuW04HjeErMyUC(i%2+#1bw{(4%ZO;_Z`Yv9M-`AnTIAB+8eNBRAOy}-k z`I-L;&+vV_Ex|M4?>7BQJj1u03OO5teI0p-Vi$vb9sXE~XN)*~JOlmk`CbG$8_~Xw z-@&PDUxygam`LzUlDzEy7SD*Wi#3MzT{`T-_k+hXI_v_z=p&!R)KCAjC*0OM>!+|#VuP$}-YVkN;nMb*&nhOQAlvlt?b=7s#ZJHbDY!E zv!0~$zuPr8a$$cysRBWNiZNIgHGn((u^qp;GO?;kZarL}g z@p%*T^7xGQ5jUWE2yc(-w7>7E-rakpK+Br1PTdW9av zyd$&vs94+<-TML>o>HCbJ^l&vKkuF$YU`xnf_Etde{2?7agE}_7;XJ16n#25kH|Z> zWONbkNiOYQ!`)t5h3N+$UWP5f2D&q5T z#@u0NJ0T8y)^`Uq~W*WOx}M@ zIW(-3J$Kr+Eb}Mk(N;`s%(-$KVwt>VuNOMGdL@zB@OgrnrA%=~zbmA?qlsY8f8#8! z)A{MFJ=pwqrVAI^y_`V*l8qtd6nk0!p#D?)Cp33;OlW^H{th?#!~#Kn%Mo+V>bqK? zM=rmI8}{uk(Dp%fN$a7r1byAhULqTnfB61V{Vn$u;>V}o2=(gyaX773NgVID_cIe)#AF z`mizbtj}+b_otTL%&-3W=H$0DDx2BJG{0HSS zT%^n2fX_Ny1YZzv69dokau{2;1~(O^h1Vy=Mah@r87?AJhNA`A>he7L@xS}CJAYZX z#@485bU7VptIP9vQC;4GT|Up#p3)rz9-rsYxACBVj0hLe{Gx`6v;FSkoX%U=vu?2O zoX_)!F%XZ7^f8cb--`|dfzN=8>eBb#)EHnO9d@NWQT+OON;2$)(ZF+>zO+Ew%kc`> z125}GOMhB)c(y*R)9+i|T?vwW&_mPfIhF=;-CBo9aMru-zW`H-^mSYILxQvFlv<~- zHjrC4B}PkmqJF&F?=8VuSr)YA`g~_~mE?n3RvskD2OWRhT#^skm1ic&2Sp{0lH`N#zN(vT znCEHhw@!kKx?guy(7dq7zf;}JfhQX0)1A-c80Lf0yxU0dlTp-Z34Zb^dq9GpPJ7Rn z;HT+!4JG)g=h5{!6f24Rvvkr*@Ojgsu!pJ%kq!^NP#<2N){ z(7d(CZq~sF;EBei-=8}2@IGVJQ0JA1M?;l=rVr0+&+<)UK;m_AwAv$*mt zOLe8K{Q5T8hX@=L5Tmm6nx6~$jPfJMhaVG_QF2E{7ryF(E7hIESq!Vk=-H$r9(*H= zJF>-@>GQ8W4^5x4f}0${$JyRdr?LC_9b8Mg4h{6-xYiiGKFtlQR}zQC&#+LRt5g!_ z1g+_%YM!!~>6c}1#20H@WW>!G+dqj{;YqAe|n+g zCmxVitNO9}10Rx5>i#lZ2;uiPEO?cT4nF9_T~rTcapKeCai}rwM|!QUfxy4QGinrl z+KyX!xMY9HAX^z1)s@GETRIL#UROfMpVqaQ{Cba%ILbAOiyePA2inUz{!q+c9m4JI zHjULkwf>5}shV=PuhwR??6Mmg_IZkOS2iDKn-gC=tJfheG~F#1np@`I$6h{ZJ-7=?{iD=xi!;S|1_^{(bN5ZNUve8j1K7(jl%M(k<^rp zOdf|-_fU1cjo&pd&PTm%=Fzd=FPwF^3zMJPr~xv{sm-}>yukc1tv&!-Z8PCA`;TJn zE13_)-%cfyvx6~{hyIv2*Wr>(`TSDRJBk?|T_%e|__*Er*G=!5}Y@B$5&#hY$WJ=e(fQ-f9Z#yZ`I0F@-C^gKyOiA!1WH)6!a~BB_rFt zO7e$Um!{$8&q4%!*OQ-Oo6_Mz`zg;4k;CQ63-#s=p5SEl&us7&UYTa+@#v?Hf_#We z4X%4(TLoV$lkIM?3j5?$5!zRp?2Ko`ykYkX$b{?}hR+#$3jVFTmVqC>Eyd4&T7RMH zDcs^?$#}RppC#(OCH=WO`3wHB=&fKc!XXb`!fAp(@v8>nrP&rj{Y#U+c<#njfqvXE z3&r-06KLP?bNHw2K*66y6Jtr%gbITHp~mrKoZWmue}kK8Wb~|c!g#p->_j@&FTqvO zSLWjC6PF78p)`5>biANHB*KhX^jR*9hqKjEvS>jSq5h@OcoGpYQlPupEJij>N-=+F zEcE|O{;Fw5IfB@(9PJb2X5jPRa9XN=>3?)S!9T}o;&aLPm^}{}Q6C`J0C@!PW$VjI za)^y#{nNj@9Cq1B!5-s{F1-suS}_b5a&P)13s6{7>p=S6whRsq$ubbJEMq zx;?lN;pPInx^;VS^I=+eoZ-guT!hk`!1IT*4MhG;y`HG0IW5sRw`nmKc*6MvU}Ko$ z$99mv(&0HB4uW~-MN0{uv&MAp3Hy-rahhRH3vikayMc{0aV-($iTsNSU;3Bzc!QPy zYCRt4Q)PKG{H4Qlyw8!C&Tj)e=S^VF>(4dMG6&^!ev8J%k?v1`Ij=8ge_>CKwSnB} zg+sKICz3nldo0JsKyKu@o4^yvxu_Nbh7#Ge7(82Yj=_`_`*Y}hC6ddwX{Dt+k-mqS zbtU*~`Ln9oa6jtzV|GlwoZgcneTV*-NzXgzc}aq+o^7r!$xFq*zMo^5mkQ5s4SR${ zcC*#>wM`7{cIFOeQJzSyT=%zfL;Q7c-3kf*y4Jh81b_9tVl2U5^64G4hWM*WUA9I~ zWH;Wo24E=BxMX`~keTHIhHoRKE7Ti7cW z_9lt^Tb5)k!Cy}6R!jCFpQox7U%}%OGuzob7eb=Or}p}G6rvH z@swaZ(RBueC@>{&cE4uR46HwcCEE?pfis{VlTSl{r;E=(2l?}ZV4Rt`nT;3NIOj2uWR@?<*IeJ$0hdkY$9r{ z*!W$W9U)Bgk7_Rxgbp9^L6 z?H?NB1KS3Z>k%s$4fc)d$Kd#f!E8KU`z53E%0^tffeVXT+(M%#Ps7wE;*$Fy+)%ztR#V`e#J z(9e?mmRt2ia=@-+9p3FF^~v~mH3j{R6HAj7M@tF%wjWL-u{S>o^C`#HmQ-`#^M#;4 z+UyC6`BRb)tAFAynpiJg0d?@|8EKE_=JWFt=y^w6$yLv6LH}$Q4LR1yg3Sl0FMBwK zj5jMI_>*-qlHiOa!T!z4H;9w^grL9HhYh%Jz(k?HFTM7WD)JJ0c@5rSYpK6{JNR`k0_aXEzXpjb-sHYVA8(S?ITRom7*o&TBftnMY^~T`bhIK?7U{$UPC`3h`k|?0xeH*gcu$hBPf2GN zeAVG1&;w^ZL!CY@YJREezr9cCak~vHe^sB_v7`ljvDgqJhyGj9VqMJBox5N|X&ToR zW1vE|uFsazcC_&R6#xd(*i)K52QQY}201O6J}!d&R)C8jj)EA8Z_A(8OyeWACke(^ zCc6o1_=NM=csUbT>u0cD&mYt4pb_V#0vRsSVH>_}IyphZwV}n07M(9< zRG)rqxiWu^mhy!26nOt4+4*kzxvIP6hP9}N6V~AY z?~DJjc2()SlJZrw@NJDa$}`wkl!qt=68U$rO^O0=kq*c3{fNYXi`r9u2U@^}YzI;R zF6u~2Ct7$L(d>K%eH;UMIGB4~Y4M>2+Cm-<@RKj4yV1h8WoN#L;<+ww)mp$$-Kk6u zK`s(7l}K(*>qc6N?}c*`cztdJFu(rTSC|l?0G!pE^8IK5U+&(KOK?{88IcTU>GD^+ zz6b(1OP9amdFF)XzC`0Uuuq(V@>ni@AbscM*j^~jAWHkw0(Rk9M?LyEfR@3u=*F4e zKO%iiG%F=}uHoGW0QM5e?ftwt8}2pz{?4khP-|@?N{0F>sq?J>kh)KP7l9s%M;st%2QU>pMx-9V!dwO7da;pQ~jX=EJ5`yDr%u z)xu$+WIbV<)=J5_a;L|gY3E?jkG)Mc1C|qw%hh$uAonHeZ`Sh5z;YtF-(lso^m|DpH@SBaLppD!PNhDq?##_5CMYzL8CWY%)ItAT&l#)eArSG!AX&uMKSw`YdG zg7QTAT-Bp;==Y{Z-xrI{2jr9|lKXWoPC>t0MRJ+lM`|fgB$vHlg<{>1rz*9tow}8I zH2Zx%k&wZS*|kumjcT1s#py$u(p;T)d8&q?vk{QED23!_`lw{x2eJD68du1qbN@-mB&XvNrcRqK!QczQ++GN}qyy?5jDG#lzK#sS=XPBkEv zwJ*KF2Y=qbk~?vl&w~uMa3SAMI4L7FCs=)==UMbFbv75apT^VdZKDoe?IRgyWRrz9AT#FXTjr3r&vcacMGSyJcY+|vYXw| zn)w?@!ERU9zjiI(pihU|atBSU`Tk`*L$80;AYWVhG5cwSmyp{R4L52ApLemS`~=6A zddTIMuFl%WE*^|BtY>lFPx>&t^JZ2SDxZ~)Hx~Lce>I;%P-M5^+`8ADnZCRcDT*3P z7ZRiKZ5jQwbPqf+u``$YnLWCrNtn9mUER%`aR(k>6rS`!_b=IT%XXLK86pnwGIe(7GsU{pg6T6gjva9R?x(Z^u z<6-f++=zJ3s_x%@zqgs9y zS^ZDVb<~(_CO<8!BhU}8AG@k@<~8{F;<(!yrERe%kLwr-^<^Gj#5QNgGWtsIZK%|A z6Yg2s2zEU$ui1njcUnx6hLz-L%wDYL-baTr`7J%?BgcBf@uVha+4aV=7b^~0Mw6cJ zdHk|(iHek8w2#=gu@LMzx&(0XS4!|<&MOD5$=KrgN&S6&C7fdPCConfuR2stX&f>QXh-`P(xU22Hr_x#Slfd9dd=s>f$rmV8OzgN3fFJN>Ltj3TgkZ$ zoAzl@qYVDsa*#i~>=sE_7Aoj_(djfwnb$KmnA~`au1f{p?gLN z^2w1VBwoose*pQ9iB-wHGsgt^ohF0078Csh|LQfj=6*JNB-o#XI&lxYwZizG4|OEt zi^7EV!N$u`%{IFQ`5il^;g$291^dI?>k`Lh;|2LwUM|FLR}Z1yF82|Bv_49xA86MR zN2l=LC*W_rwYg+rmWQDK?Dhua?b0!Ve4W{CiOJm(eM8&q$JHGp1^Ly%6>x5qc7i>} zfDE)XQ!Uib>vIJ~uPVt4HaNL}%yKNjt52s#;v;JQc@Fr~bz~GNYQ@i28k7CU=jBrG znL^(+G**-u(E@SgG}k|DzEV8*e;I#@*H3~kZO>%4qkakalf}N8$x86`zrvqHtCo){A@AJa_yK`z$IUUB;jRD}rj+74=7v{m=@ZyG};S4Y8b&+7pad}qDI6?h`KG2?4V@SSRWDFxhT`aVxO z;vzXG}ds3s%YxpKovMzGOu2HZCQY2Rt zVdY_n11miZknAhl+w)+yAr9=a-bIpc8~m<^+|j_lB_SHgezC31hf3Bv9>^Ih!FML+ zmcSGBH!96fvW^j1^?)3lNN)e*a1V<4ME(6_A0x@PeH#B$a{fi;j{wO&u+2pkwe)AuSj_7dbwa#eog#XQQbN;)s#cP2OMX-~AUK$cy28+?KcXjlyW@VA7(aE%Wzs4L|&B zdt0un?Q<4);Dm-qyH~?iYQf`(ylW%Sh+E~jS=CxGdFXHU<(*2OfiszXy!N-k?0X@( zW1(iWrp-#!{_q>FQQaPlo)_2@Pji~Uxj(qf`UmYD*PTO4H>?!s0hfEjRtpR4arLS<*%BCp>RGX4I} zpU|1Y)x_pW@%6Y#&jI2la@TYC`TlhC6*PKMH(YViZl({PS)&*kFq}M8@Hp?&;d%VodO>}~sImCa?6N|An``&*$oG8S7wXaFq1>^#GX;Iyp170fW#a^UJ%`3}SE_jm z?ailsBY~fc1pQyajmaS5A=I}$u#yY*iWjbLmpz|R@J@a`FxXqx-<({S&{DAHi^~vs zg9dX^2iZJ9 ze($c%B%;k!LH>M?bo}JrTS5NBeSdP&m>+K%kNn5uB8$C^p)VR56UhK;Kn(TYiHrDH zFp$vqe~_2^*SHA$tNT4o0lw;R5%2&zK)efas0A&$7*8J;f!w-GPek*h!v9ePp6Rs! z;E8@u7r%)Am$-=UTO{P*G&Zz-13kO?xCm^(x;Kh}#CbVQMJ3=O9R}ikwr1yTKzszx zz;*oqTm;X$AszyKQ%A6~&kgc&?2L3FFUR|50XaAWyz>@vb)x<%7i{nVTmGu;-W1_Rxn&7#y~tSYD?S0LqYI4JFX1-f2%rd13aIZPI8KYH2Sg3 zwZ^d$Tr{EMe1?nQiwJH;eq6i>;3Am7m=@3ndE9FBolu&ig_mP%7)AZz2YLp z7?zh)(srt1eaZC-AO|N|uLyI`ixzKM_;LB${?* zD@5n9u>VYF1Ln341Mz+1_o?ZR-}SlkAy+5ruUfuP4*01%<@eC}T#TReu~O;Uof&@8 z*O!)&lT(kj(cvc;XS=k)$dbP6%k_VIK!TrshK`otCok6-68v;6v6|M}KwnQE3*d?R zadzo+$c2gQ9xi`hf}ik_)qs^ma{K0X223T=7qIAeHpNOJxxk#868seUD=vp(8leKg|qXB3Z9^c!ENLpImn@mEfJc z7Rw-KCi1V&{G*cm*uY6=fhUqn3=W1|n8?4j9>XO0G232kJsj0TRNL>KS0#D!&ujDg zt>#v?RjGPTEtgBx%KW#kB`4;L8ndvWnHq$a_V_tD8vEvwS{C z7Hx~x&q?59zq>MfpkvqiR;mxL!+1KdGHTW;N_nXESmwW5og=vCuA0i&V|5vw*uJ`= z)|OLva}PewJ5x9v4WH!58IR-l$>jfDimZ0Ia=Ry}*z@(V6)n+RxeM3zbUO2AOW_Or zL-v82G3h$%PsNcPaCSxt7yt2IHuw^;=p2f$|3D_nvsv7zN#BNYW~P&BH!3mzH1`4( zrw^_p8=IHJfnWE8p`~jU@NuT4m%{hb3T{#;UvGUd5?%hd2B(?r;m3p8Xm@c;4u#2Fj+Hs==9oy`0NAN_vkBJ=o?^;Th9 z*5DwAflU7XqKf$T2RZitvYFYN7WM!+#8`6)y*je?=Zfl~ZUIi*#b>Q~f2qExZ;R09 zhrE5ze0Op@e+e8tfYRC1@ z4P@=jkCaEFj$9@Iby_eQ+SkZlk1E&ZaigDUhGK2S;kd^F3!(nkwq-b}{u(x3Apg*1 zCHa|Kf-7Dr6S;Q1d~=}=UXvb|=gcd87Ub>D$B;I+ehKuGyNihCw2v^}^&ekG4Z^d8 z`h-%OQSQ5$f_>A08Mvmhsi1#&T6wNv{mVlCyC1L1g?YpO!{uL}&nIKlT_fnbq}Yeu zj+d<8s}x_A^Yxvg(8)ia>qIPDxeM}L229~%RnCGv$6F6bQ|APszNKRl@pxE6Xzy@- zHJ9NyQLyjxdJkTBm!A({Bl~+j+&6)rKS1B}FvGJPTM6w$Gdhwc@5>AH?)hCw*HN~D zy||3w#3=uxP`~C%Dz*#duP5k>U7d=~?z0retD+74?r0n$_`l$(3x~gl2=xbNzCf$u zk_COl`Vh8lvsIu6%uFW6EmVShhcmOI$`|pxK=My;(SkE^f5AnT z9Q5Cc7He9dzyCa6lniSV1ze;XKYd)p`xhy~MLcg82e?Q-2E92bOH0RC$QS9_!no_p zWfm?L<%{_7b7Sij;TdsBzQ~`gSESE=*?Akf>jt<;hn0964xAw_N?j5u$``@7B;|*A z(Am+&qirD%>F;;Q_o{%rn*`?S$h%rA#* zTLZcB-v>+ZPTa0wg}s5?gi#@o8xrX|I;oT-4|H_1H=LOvk~>q~7}ox2^!r=bxD=eB zE|ODsG?MJ&y6oOvf{Q*y{E+P98rCTuu#!lh$?{>aXG>(a_DUbgdO#PW){_4-TmIg7 z$v&?9-`^mIB+_>>B2`OyBD)P5x0K|SnpfZBVThlGbQ__i-wh&tPPbc0@XmuNN3-d7 zhDa`L;$lg@$gG}Ba&Dk9dWj@oq*Z@_+>l7$$mGS6e36;2xz_WTrK-cVEvn%oL)hb{Fxx?VzeXsdznHovNfTCQUhdzakgvulM#K@s&3#o#$9H z`N3o7;!+)#a=vMYm_FH_I{1roE!A~D{<&&FUM2FvJx-ZW(22D_;Cvn>->bltdL7Ez zpSgSxziDHm+}CXnqqk&q$6gN|m8KO>d4N5?s<%+%wXeyHc=nqs>oVga8s%ln)gIEA z*~7!@p^nYRaW7>AfjqpbS(~WFG$~%6a`lYj>KCQ5)YVbUe&L{LSoZTaS0~w=(UINj zD0XIV!tG<)FxuJYDynb(l6<%4pSy?r`H0i=e{xN%9y9-f%iH3X0@HW)R|Q;i&onaV+fn8(_}6aX5VC0U2n3%8j+l>bynIQf zT&v02N6_=6ORHRn>5KQge06t)tluE+_%UxLe?Ko6^;xqF59wC29!Iv>LwV#WkLPCo zK8!Bbd5)XeS7i2OeGa14X=}LORh$^zAayyqm}JDIrInm(aLIBnsxqMu>mT^^DQE(Y zwC={_`?pu%Ru66x(|Pl9pblQjG39Yy44>z~?d@?=IW70`bxkHe-ligM^YS~Xd4%7O zQ}E>o+HhqHX`k7Z>G%IM4>#2IBXfT6d7}1Ttnl``Hp(NHR#gOMh>CJHrm&`mvYQ?_T&Dt*(BbgxD<0=DnkP8|LMpxAPs4jt-bU z0=H=G%jn6M!qBBt@3GmEu?ncyST9rbepQKE-nT!iw>~!yb-$HN{%q#s-_eQX(2jg- z>=|}b=)XzPS2~8x1^s=?rJ@S-j4qwMAJ=nn#n&ZykS1oK+}AvutE)G+=tCTm`1uaJ zRudD+lIIs#e}FDb@+F~{Dhc+MA3Q>K+slP|M|n%!Bd8>vu9ob?-7{7T`dbEf;ef4ERj(x>6t^R5W?YgGA!k8B7O>gzP`N-Pha66&`# zK7@>`ju7bdei~GJA)oi5aSn?qz)yGqHu#@@!S6QsMPnfrkDH!kYyU)e=5KkPhGPc( zBRm89P$16w8=ldR8GhY}Q9zsp@iLrgz{gyCo`=TEG8zjr|8(o$Xv`~vXZpMxJF7xQ z<5n5OpSsu#Vn`jv;bT2NLU}SB#^KxgV~R;M5I;g}2(hScUlqiF^@@2qoKm0Cmc_iT zM{?Z(%URK4UCh(vZ)_;tfEJw%z$v!0*wMoKG8N877w`<&h4pHHQy_Mt&yb7diU{Bo zh<|9jBj|(iY)T8nCrlrGMqi1_>5u8_w;I4MGKfu@)57}_$#9AeyYRkPaxm^R4$(U+ za4#`DZ(_K!RXeygt!RP$1>p13riF4tJX5q@o&(oR-#bzpl^w^X8g|e*Ok*n6C7MoQ{yc0iM5+C+wjTUEe7imuL-fPg$d?S~`zK zat{u70-or4T)O0+L+7_h?#A4nz!S-(PVJ(l_kc+5b3!YY=h5#+?T=v+JhS}3!5p|Z z^yQ+iOj1}I=sRLNPD^>0c?9-GiTvAjv$^E_iY|V&CHWxl z1|uZ+$gI~4$^V@yHEX#fA7ol{kmUS|T4(D4wi5NjXmmN)LnZR>bkF9J^>j~$vHyiD zlG|M4gyjF@Uh^6vSx@&P(iM0jyPaPLN%Bj+_01*c44%sCD#e?pkYmX0NEdC$9U+ zM0xd_lF>;cJ@LvL4U{{p?SZcznda93)J|o}c^SDgeG>|2Ja}teDUMCsL(~psb{-*fPIfiVdz|`PTXVDXa&%}Nt2@cZ(B#?|7-zKuPupJJm~(T2aoxDNvY&yT)%5N32@oU_wTt8%F3##G<`gj_rHTF z+SPC``B-4V=(iykP$@+y*SKXpMxRr?Mo*e3xTn)f@WO%nWk0gwONltWM6Z@_r&0<3ggcG$fz|K0S&L- z9cPeXS0)LxZ@Xxe`ktR3SF0?*UJiDI%)G?(eO#J?K2Gu=eGZkZOFA*!Tv<0Okc|iE z8@%omuF(GjlLuN>A%=KtEZGmU=+Ri*qF+0qUcR&}x%aB2K<{2NfNNvsDCl!HZOJw8 zt0mN*I^~Nm#rO&J=VEivnYehN{%cYe+IYK@(4ReCm9gyyZ$aMop($5u+X^-w;9khv z@x*F%Nxr7>z{TXp8-BkX)Nhkj~)>q+a&6|Tci(@G2euI%@W^vk%k;JaJgVFC9)~GFqOxzpwIc?EsWoBf`8M`TH)JH zZw0yz#jIPbOYqF`cyBUdesTVlwtu&16-xMYK=99W*)e>6%143LYaK=eB>ko|s*q&$b3ts<;_yNwVqpoRad?%xEIE$^GTk_)%u{Zb(@eG`| z0Pi&RX890ZYzlpZSQ+AAsQ<6<1H`NlkMeE(F}&-r0=1=~RdA+*OotV8u^RPD*gpfG zL5{u)`4Alsbm*`G-*zg)4?3)%vrGFVtP|7Og?{S)etOe&CV(^QQ@$lFyuLG%{WGV^ zpY))ZLRcpTV*u-+C{Mr-yj|)38B$}79L7$EA9%TRQ9eZHAB?XKKj`{FF@?c8F@H>X z!a6Zt&V;QK)9;(jt*H!W=TRWa{pi^+1p5BmKWRgRP3hqROi(%0zM zSjo8zEvxm@+8D^WCqI*%Kb~HDx}t%BoNdBRz!ai>xU4>zMR_8-)1D3jOd*mxnSU0r zhe+G!`(R& z{BZH=EXn_Qs(Hpu@_(LgEOUgMi%8$2lXYRuny9~PT!SS0drnvBodeG~^yk5cX>TQX z#69|l1dmkd8J%N@N0v33s4&DMFHJs7Ag9d_ zDid9Y!B?2qqUMHXF z6{pPYIE~Rh&9CCVMZdV2TlsZ1Gux;{b@k`WN8QTmodf%cl_|^&= z<>_jR;A>S@xNRD0zq|q$@UsQeS1`W|9ys|6xe&U6`JY#&q9XIsF%o>JWL*lm8KFE| zyzWMGx)ECD_lP^6%kPKy{3sFiAE+W_gZX{w*Uvd(&n*d@-4Q-6Zkg|oP5ri$RY~nx z|2!7YL%+j+j?Xm)HLvf*~|Iw14Y@*v|YoY${GxgcvXu>)!rSDI{C@Q#gV+WY1h zugJqscTQyXF9%#fQ<|K>u66gbdMEqUsH^)RZqVsktiAW9R(Pu8USf8WkNXRHT~rhV z9mSP0`2AWoJt|-qx<~8fh3dm%!SuJO@*NeGZ%QH;@_CW6Uyh>8CJHj-LrL6U`q@|H`O1O$n=ZSd7&yb7 z47GF?^yL)%L{oCNvGD|Z4Xa+@YUT#y!e@BxTz3<#?V=T~=Z?ka@QbSTh59E?qVbbj zC3%7&sXI_mdda%I7SZK!>3JnM&fk9?{&dk>&^IN)g!{d`wV*G(-F7m6Prl&K=2n+c zPVxU+27fG{Z6f1)ulQfwy?0m?J=ZY4Aa)VESm-E-3KkTkY%(*bD1u$F7wjDyb{7E) zf*=+I6;Tu`iVYPh_Fhl{6|wh@z3Z2gxM61Z{@(Aoe*e7p^PB4$CCSOjNj5nxCmCMe zW<@ai^J_EhAC%8E+JsGF-8eqmj)R5GLB(-ZK?76JmHzB}6~NaqI*q%1ExyOVp?Q1J z*585C_j-hpn7D-bQ2>70XA5ysP9ksLY4R?7>T>bE%1NgdV)x7E>F*2hFP_iEuj}?k z@Hadjfs0YEgtX z2%NjR2Cx771PIb{fk|Rot@&bx%8Jz$WASJPghiV%c=;G-ccx z)D5WGobCsKjs*G->su<=WZX_;_`G3{=>KV_p;3P_;kS|NQNCxAJ&7Hy(0dFXge&eJ z2U>Eyf~cJ)x80oU)^Z0stp#~uKZw!7?%9*uZX?F0xxxOO(sqjw!A{fKZqNqoFM*u~ ziwYJd}-Lu+t=x_TqV#kf+$^8IgYs&hBtK4ch2B zBa)uyX-8n&lNa*9mL~H|F)oJA6X`vBJ_M!%d0BtUP&-Yz_mhfYerjzuMspF^WSY(- zzYDL+?%C@~(%s0*;09t{JMF@T2x_P4+H-XYKCPX`Xptn6r}%w6L*}Z@bo%ku#~_2` zDd2n~hUwW~fz==C#jTx4O@cig#kd5GTA{bk(`;pMmZc6{R{hnUBu~+9_4!@E)>7bG z>eEwipJyjI0&T4W_rz|o-o1DmZZ*xa(SaM$d86JwPwfUJ_4avgdT(~K)uFFs_Seo!Q!;_K$oawaQ^WM);4B)=(!0-m^g$Cn`>U(D zTJIdumA?LZ_Lq0W0zLc7A@Y)E6P_zFSq#0I6XUUeXOlsyxg==&RL;G10>VK z?Y$g^+E6+FbM+5l?zz%lHI8+sdccwBCAj(hFex{l#b0T97vSh;UQ)r0QrTo!R3>lY z@P5k_Y16bqs)uQgEk-*RR25xaDgrwq8~m%(Gw%(P_O@XA0j?cB;i1oS#7ldao@g5I z5oJ6*D9%{1iMDse*ct~IhDzHD*?r$Pwp>8%rf(Gcwq2e+1U1_;2ku zMokl%;vV;^WI}V6V?xyGutWhRwqos*yxhxOq|V=&UDvzCQ55%QzF^dI1BF*LIi{Y| zV3%l--mHp@+{ee*S?=j6lpsA**vG3P)Nn%;1=CeF$lAr4a=@`Uy#Z@7tT zr|uVs@>im#`CjqE8}{!{rlD5qi4~pM9H_J8sLj&JVtL{ts&%SH@PK2oNm*h0H1>N;o-_cJ`QakW*j1X=ulx9j z`qyTEY*vNYMfFymLe2Af3hy+VD7`AfVd|cKTf~Lu**y*gnsD@RNFV%iBeMhi(?U>O zo~d}eZh1N$c6~3P0~<;U0l8^(yymyhKxgAD#9Ym8nogV@jl2#Y#$z(qX{=(h#&6t^?<&?Q|m_y zY>?lM_QxjH8W~h>i@&P&)B0Dc7~m;Qdx@V%R;T?Ld2bLtaBr93;Cqage-DmCBM;ue z6Rqpf@`1k^qHVL=3$+(Cr1$`Ti;>lZEkjtmW?*=K)a=TZ3?{zm`zwdhuikx$u_7BQ0JDTDZ7MS)Q(&NKl;DsKUy#7~wg{IPB=T%m(%aD#ZWX5d-3`vSE~vaJX>@6OK8SmKiAPni*IvfXVE8H z#qnK@YAo(G7C64>ZMn$EMdI+M=06pkOHHDF3Bb{-{%N#u*0D@2zHL8Fq4Mt=aQHbh zw+K)2J8*nyAB;qkPMFj4#k`7e!nO;CpSr_+k9iqG?G_t}H}eVsYJ z=-$`y#pi=~{S%3q*w=Cg$NypHC_EyrIxl}9W}y!y+Vc82(c5sT24#8q{Z>cOA^#fL z&>x~#(O7T3vC?ov`k;t^)7m?A2)?@7HdM^sF(YYn@NIK?Ux>>`-dn7nM9sjZ~I*D-K7 zwTlD-Ba#>JMYl7i@oy4Idy$vXR|K(c{GJ1VyBF67V&YV7$?HvC)&{k06#cz0vKriJ zz~ku{zEpaiM^3YKT;XBZW0mLCIMH1%uI)-wFM6Iw4mV}e{tPm2741H=)ab>vg_=*+ zi))*mJ;@X1yBwcInv_N6yaHd;#1@dJfQ#uTWs-HFfLm<##U0j)9AE9ox0#kYaFM=0 zAx{BkHK3l_N(b(P)n3@EQotG1`J#93C)+qi&)zxf9w<4A+#>xtHai2r6R#Xa-=^D$Bc7M1@Q`;P)>fMMW)e-O zE;x@5d2JU>=2>S$*_xb_Xuy(f;+=hAw7u{trLc{oMtXX35tZ*7qSQPs+h5pZ9qJzI@k(XqF~asM>f1t*<$gp^mo=7t10q+TNC` z>F8RMd4fwt%5a0(5IFc{Qt_uX!a39@oULqeY1>ZK04Ir7RA>q<^kGZmWn$s z&Y}GQn!m2npzx^K6#wLz>(zA^df;P^*?kI&2QNcKcX|m&Xa2p1$s|CXaV13jdW*#$ zy;;x=9qZE`f4#MW_DAFP8}+=|QruDJI!!xVUx(J>*Fr1fQZxgoE!FQ+l#?Uqidj&XD@PaHaGDywLYFik~u`(w9?Jtxma#@Vt0--UZ6PyU#<7 zA{hQId6DS+JWpKn=z59|%8P=`@R&Oo!QVZO6riX3`-l~;=6OKcWpo4VbZ>)j&u{~U zx1TWyHE~)hd=LI>ANe?-6-gt6{LRJsR=o@j`rZ2r?a#fR_tkN4qHt_b@%fdDMjG@k z_W+%b(8lQU-_URy7S9Oj^NIJ-jX5@y9!Ou`<|#z9h~@pY8+QaXj$rmLlpEz}#N*?L z#`^bJ=bVXREPQzXp3J+BPSmvF<@>Cz3m2T3{RLINN3RsVU9_h3LfU=FD&fQHi?sic zJ~5<$fD=#i@>AIraU#CT(_z=n;x?Cy^+o%ViQ=a=#pgF_pLUS)UtZ+&+Y}@s^_WS# zzRS%!$Zmm#)A!8&3EIA|_&iQZ;c{ett~lNe?>EOc#yRuxS$3|o__NU}KAr{_-{KPQ z5HG)d(^qg__k{N+>9e`uaj(A``UX$N@DjrP_~L!1<9nB($At-=td!_aje7_^&rIO> zPS)&$OZMr&(*@y+kVk$)3QuGy^;K%?{_x^Dpb2*kiJ z-DV%;Ddgd~VKH>yK&dmc`;pBEtU0fH1QDHCV?olEEvjwI(mn0_Q4-F08R3 zY1_Yfoucd0{Q#xTJOX_G8j#OK9;>waqON|N|MMo*kF|OgSiwzrg0>JYi1B z^QwnLf=^!~&ug}z&H(B~sf$bfk)r}?eV0=;;wgsXe>_5;oy3Cgn6!RI`-Ad}=N@V(ED z(9?T&e>!%^N(aui=O#5-8w&b@ZhUcr^&+P)!Y~JX^$NIW4>}))H6(}oa<>nh$xy&q zRiCDJPNVhN3!b|Aapl_@(3utZYBd@Uy08M@I(M3I*eA#FcvrGzf(h6weNtZuiIDg!-JI!uO(1iaQp# z(==2uOnHdX=CS?wj-$_@bJmPN2-RNrI5poYGhH z?wC5)%39EbFh4QitNQt&xJfmcmRpY9i-JqVh+XC}Jv9R_8i(fD*)f(@L?|@5;na=PN_+?)gq4eqY zJbmmzC1Fvu7LNV=WhupKXYbq`GFt~wcbhZ?)sjtxV(^l7TzTqjs`}k+t|Gu6sc>l-};)%!GdHYdA zBGAb})oFWvYtEw3A0wp~s?oInK*N-;dywP&rL;UT>=-KB!Admj)STA$UU^S_X19mX z*1sI3f7_trs6ljPVeBw7njXA65L+iz7S;#O;O*Hv9Y)PHZ7BVKzmY=&A*f(9g@<(A zq^B2~@UkahyIL`WfHs zaG#eCAKL-XE?u6E2f#m=I|&;&*5~ad>`@CWtrS>m;Xfrzp z5A{Qe($T4tJ@|Mu8}bp4>e!aUKWOHUd-W|&Uu$##ua9B-DnusIJ#@eW&%aTRg!99M zG!2oNDk5L0UI5>XuA@VEUm_ zw`BLkf_$$_UT8ym&e)8k&B@DXrr%)XdL+QX9ZujswIZ)Id087wKLojGOJ0D3du%~J ztVdoV^Jret%_*P@ay?QzF1r5HpTj3ZYzRM(4ET(k)YQcZNv@=#lcVe>kr_JwGhhBL~}k*3%e|2;jO1f_Q~7o0drIVcWzxbssTQb)bs?wk!_o-7^SM7# zOd;l80heXaMcqV55KFpL^)g*{#FG@Oo(!=QmR&89dL^^{_9Ji4pj%_}#n%t}Q9k{w z={S7iK?|u`<3*H@?|(cGH@&|?YTvFht)Fvj8`|$^B6eDC$N9P@e~I{D^i-Pu*ncU-xyQe0JcIb?DWQ>EgY&m9hcc=ui#=@5N$EHQSF|TfZc3v1u*t zy>vHgZ>}k7ZhKrfo6Y22TGt(DLt{rgVMHC;KG2Zbc>?~q-G|bvndhsXbf|~eYZ}}C zHEI!u9;TEN`g~PW`nHrsfE8$8fyl8(Q-OunXN~)Db>4o&w z%G-pU+xpY;=Wni{Qp>!tWu+y&{)jmT(8w;VJ%BGP+=yOYVR91E_(ntVr(3XyhR)~s4A=d@>L=cG{Ghx`_YUM+ zC8KzGP<;*R5X9y$l%Jbh22V0zdMn|_bk7R%;Q^iFfBOO61auMEP36Tu=}Frfv-Jx) z2GC64_4FjIJOf;?_X>Iez$F$1{6~6{Gx^3G-~hP}G8=Rp^4~w~M>Bt$RwrUQM;X|o zR>^gu$zjv!z5807h|y=N*pH@laR}9ulsZvuk?2k;txm++Frx9dW+dO7ywJCC^JnYr zM{6RN)A(B}0%J{HR(BwVF|i>p=tL~fTX7!?%cC*5I{VS~)ZeD{qiM$(^eL?$jpfp))2geg>?(&{U$AE|Ud8WuP#Ds6w^_m<1ifX3FD z;Fpu8w;w&F?@kn}~z8vmG*j~7!ML}N_Ik%;& zPt7{qLhnA7)FHflj)Z$y=)k3~n3!d$gKvJxj%t#pz~?ipi>H+i z+;(3#y?EZqa~A8x!Itqza@X~vji|ldQ`e8SGo_#2_rsFitn|JgwtByycV02#rn6pr zYY~p|Xr$ARniqZ5zyAyp&3wyxIaFB<(_eL_TP}Wg;hA)-U|J@mRS%0$y%w9rjrm<+ znyR{-YJxNO^pFCISiINSS0|C}(-~49KOb7(a^x~}^Tk`CV08@&4|Q%&?jaiNn@H2q z8FO*vgXhHVh6!0vb|}aYk4kwUc7L{sw&&dQkh;F`8y|^y0ZUP}-?Ig|uVkXM$-xqpGui%^OF$L8 z?C1uZxtr}5zF2S@ncN*K)hp~m>mTVhQ+>;LjqpB{#lP9#3Pt^fh2wnZ5Q-1_wB~^! zK7O3-pI_*`S?#+f1V^@IeyUD6{zR6~5Eo5i_kq;x-5#d~T)|cHohbfWW1gbc>plyH zQ;vE7E_gCxcOmC;6|&*)Ms{P6tHD0O@a}Qi|3ZhAXwYRztl4^JCX^rQY=kd(92HV_ z_N3_@R?g_&jY#3>$7o95L9f-QsI@D(Gvywqck_f2_-eh<6d&M7pBIjr&Isba@6Kvp zP=$+&IDFlbx6puq;`qf?Dt}ybI)u_^dc_ep4e2D^5}Du6xo-{p_Rb3-r7?@ot(3D) zeIu;8(6(l2j{oioYhkxxvEOP?$u;Pk>0V0DnQcMpa_8D$XSrIaWiA39L!!f%MFgr-eroH}n22Ib8+M9aQYMdQQIOHJ~@U-v;0-9C|Fg z?AwcuAEeI`zgO@1h_^qaaDgzgSMfP5zh$X-ou(ykZ++l>!SJjX{XL<+W#eSQ?{z3| zKlaE@;TRsy%aiX{#S`q>^ZIV(Tj2Q6M!dcE4kj$xVG#f8muhV$J6$%5QZIg}Q!M8=o)DU^B0v!+JZ4)a;+8?bx%4GFG z3}v9V!QLjzvlpO`a(xuOw+nI{^e51bw0b7VO+X+|M<1nkdHj#}dr(?b1L2Gqzu!aK zUl=1B^4gM@jg>!~5##5^SRT_`v3KFt70u4giQWdvRSUYia{di%ta z&JNY{$6fJq(9<86)ehJ5$1U#AQ%^6PIbYJ#3u_)9t2QUJ%KPzr_!m9B@Ob7&$Wy>I z=x(C6B;zNqYw}jgB6$k9J-$hLdSSn`l37+daN}Knc-rXTJ2+qw?DZ<})tXQ#ldKg* zyA}-t;7$z%-2UV1-RtSV&3g0)zU8EVI~%u6&ks0c`_Rn#I&fo>I_llCQSPFTUVNle z+BCg;%tsX_!JQh4cDvMXpcnTz=e{N6Dc}UhDTnS?v=*=ZHt^aX5JdUy&~f2-faOW?3Tp;hRG1>ZaF|BrU3E)S7SOTh|fE08! z_6L62aElt!s)aSxUP1oiE31LDeo?K{=)>rF;<-v2X#LAa1VaO|P# zIH9sPhd&+g2#u(>l+pt@?q)fOOM=H!_?)(N@eLbEw6lCd;e&!r@Y2D{aR2oqD7-lT z9P%|c5U$$vqv@bOlhIdH(_dfz$V6kBUB@>r-KOIY`11=J;Qot*Z20@t;Bxp* z$I^mR5<9O^>I%7cgX}w|)P76bdveYMKlPm;K7Gf|)oYAhap3gc(gGYx@ePgbjY=4M z;m8uj`;udaHO6^nBBlTE=9B14?qKopmF@KR{7Jsin)u|7aPM6Lr59*u;&}@_uC|b; zqx-x5S zD<9_L)dhDrz814B@$Oz%c>M<{`|<6MLwNi9A2!9;(u?@-5$#hJ$N72k{`^>c2OYgQ zpX--*;vWjb)p;DgNcBs&>QJn2HvDx?v>(FmVFCIMe0nZAm1*n=f5Y?j+a0tpuK{nr zqUBaJOYF$$9oww5d5Sgkn`kSZgA7%3PpY&1Xc^y(;Ls0xj`sf^K=Km*s zRIBd+tx8|$Kn!JaIa=+t-~Uq|1)XSa%NbN3mDjB!F8hagMCL~|BW;_Lm+3l8AGIK9 zOY*X@%AxldSdp|fd7+Jr!1ErUkAfVwB`>SHgWh8RvJ~Vb%Ue$UsNlyTej8d>wJsjc z`lz(}D1$Qu-IMF1(8k8BKpKxI@5h%i7E~YA>Yj`~Q-SzQb@q{qF!(*SK2yMVZ>%xs zo;v4s_EJ5w1<8jy3jhx8+ygyRt5Y)i*mrfb`Xj&GwwEeM>Q0PWO=o0wa=_wL4XWePoHGz5doMOzTJYkz12=8!gH@9=i4L$#;%c~W7``4F_t9?t&mUz5A-4cMn#>+LiaC|10MVvX&M2mVB+QhV?Cn+n8pYMb@_hE?`GT z@YO2d@Kb;A!7AX|S(efB%a$r}UhjK8r}O6Medn}$r!#u@OW)5t4tESF+Kv6(SDke8 zsj%_V7ir3Y*04NPd(#oFz3QIS!{iIqSB|7ENA35u5`A~IM^Jv|{C+fKRBI`^#P>`{ zJJvXguAH1HdCh4=>)#nv4~+;pi%+7Bu+)h%x7_n~h^3fPuMe$XsmU|+yV-7071=in zijA{3pmXbQiibD5P<;6t0&u(YJH*cKYts7PR_{TL2G*07TpmK{fjT?S7-IJc%zstq zt0Ssnu@H|vKbW?Eue?8cpRz>Q`*;5m;Lr5hBQzd2g|;7U6M_6j1&CwOM%wbUQ+#XJRKOig z)`*U=>^y^6c^h2x`LN)=rYoi2d-)gSci&i=aHuQo-}ajkPm+qvO+sC9jzN=)NKnEgxJFuW7iHwr|;@8mf1^ooMZlN$ZDrRKu-XUBoLU zO{L|{OI1ZnYb6MVzU(}cd0$T)cNhtSOAVy(9)2fq`g(IAxN9MWAGS0X9rk`E3<_RG z%jd>kB5{{%g`ls_G(Bh6PgMSrw}{$)rSL%S#;}vvvXI4J^a=dv`DIcCJgwwTI(}zz zkE33tr;D9#SE1<>HIJbh{bmUzEiR~`E6+0jCykhO=QE#rkeU!95&v z(VN2`*%yWnzby7w?^|*J@BYHhgF*e=Tg!x3)~`7Imu}h%Gnc&dfHHW3P7Dy9Ox?%J ze`f5*CGRqO56TOL3}g^LhxhmAOHni#8_$2=wFTkGe?{^9>}Fe+`3^_*i z#h}e|B>SJM%I=Z zJpJASUVgkI(dQd)rSl2!|A$?79&{06YhX1wxWB42HhXPzg59RR; za9$tuCawRN=^g_yv?rHWS7$2Y8313=^L=gvUIjWL=zow`s_8R#Bl17!d7#5VUfvKl zPm;&u8K|B{&hUe-r`6#BF8uNo#rYw~1KphTf%}gceMK1hMf4sXIi}{u^}(WeSj-^tET6NK)!?QW^keidbk~VK~B>= z5^q7qP7%*};9MY$50#H!*UQHh=j&NNOd-aB$1}iqkR*b526{?<3m}yM-cdr-AO($Db_}9y>mtrdyN7eUV*P{ zw_XtAppw(_X4NHn?-(#FU=j@9ei7!G9Pa29H#PW=Vc}yfoTi^d@_2lNc3gDhL;Lrx zt9Q<5LgEX(^FwP>(=+N4eDZdKjcbChSkaHv5{`O$bMEgZpd%~b?o_qX^B+%Zdqi!i z12SSAlb$|o&@o3(A1+zOTigv@STB>1P$op}9YkxQcq=4HoXb0%X z3b?pIclG?ZXM?u55uH{6=lHV&+-0o5x3lX4xN}PZ=TRwLFaBW8fmM3<8^5^ir_R{4 zNoX_djpXQLN#$3=^A+%uEw`k%ul}C@4UR*ek*pPtf;kOXd&A#KHGK^ z`r@@u%9+pvrl#sl$#N+A`8wg`-C}>ws8@@HGSgZ7!GWlWcw5i=*x6|$Og&YXN5_#g zBTC$MybqN(1*!=s=++kL^s!_r@9#~FMn7WHgxK+c6uwFo5&c=c3CG2^qiIcC3uIYx ztYFyP0;Z`d#LEC}Z!!({9CLxZJW~`_v^~`U#A7Tq4%*!=;Xxofln4^QFz7i z;-)oKDSXwXRdJ_Qk=XH64#j_P;b0V#oGiI+#TkI#f3H8fZoEp^xr6yDZ4R77mYpZ# zmI(uB{Z-HUsCPb_j@wQ=N9#kK#Dop#WFsa|?`@f+_B_*0F!EsMe6|noh8BOQfWO>k z@tpuaw9|W(Hi7w%A^on>Z@mfA(2E zL?t%W!}W$1`ybn^+k}j#vG`4c@V4l^Dp?Aj_>t1rDM5{vp3?|J@AT#Lw5;uh7qw^c z7|@?FuZmFLI_y3GNMGCk1=Vq2^i19o?eT5ADgN5w6W6Cky*q}^@2o@ni)VlHEWNyn zFs>Yn4+wugALZxt#o?Kod3)7ch9W;7LkbW04R^0Vd%~DM8`32%#-PT_R&#ypQ*{k$ zc=Shc{m=wdr9|ayfQ6^R;z(3#ZdH!&MM5xcg1+=#=0Sw=d1d|5;sJ@=#46QP_`qvw9) zGR5xKOzN+d>y9;UO`-Z9#5aPhXYKBy@vK_ik>z~=-He|PVzQf_@lkJn);! z+YQ~(mwtbv4uPplUeKFHwF;tom>Ef%|IMrV)&%kt{cTaH9q3#Nd>ezpvp^5CAg?8P zwfzM>%!;I~$;)WY0iP?^JGJ@-=wTp7i}g-d(9O8s$>8X>#}(~v?cIm!S0Gy*$P4|j zB>FSxSMvVGiBblPr#!F!msC%($F6|e8@eCz6mVX{H)Mj|B(J;bZaU;C;G#P$g)=k? zxTP~Y>*-A=4u|WVt6AJXG6Q}yc^jj8PJlgo1-@agmOyN%0xmtS2lzA*qdehK7#z6gqz@L*WT&s`V$k2%e3`(X{Kr*{DUoz0!nW zV_F}|GY4u=aA3P^_#2+Qv2}6#7jr3m!-kHy`jORQbM-2UAIb+DipGh*I@9v?rG#m{I?Tl#9Awl4gIy&NWT`0%8` zLef%4-rvSA1pLl*IEODhwgE3)JDRuOD8e7#@b>2LZZ1{DtgmS(b7VbJ+Ya*K`8WC}{z*Rl)Ay_XNj}-71$#mtwf+gl=al!G z{NLo$^}UM~@`=?=#pHkPpI|)K66?yR((hdK&ZTPaH<9z8lUK)6`J|Oaz+biUNh^yW z?^+tW?;Lm{#Jxk_l(P-s8&nFu6jQh$ljJG**M>D38jq%xSx{GdZ;4huY2}Ho9IHCV zkIFGKg43M5w7;6x^n8Q`Nn4T^@WFXlkYiTl1z7}n4t_55zCIh0w*8w|BeWEaN7Kq8 zfHPn3M&rk{J`l+B_q9PFv*lyuX10pPk7;EQ`#lEI_%X2Q8j+Xf(Yr!4jY-;(yzDnR z3VV18e8Z+Yz}?}B@oRZI4s3k|+)3jRS-NtpwM`=3uanc~(xRW994ok)E|vmZ*mBA7q;$&YoY=aQS!*qJ*Hljc>G{!~D|wUPwa zSmqD4oL>$*4>&J+49TJV%s3OH@U )q&HLe|!D3L{n1g3%1rDIe)AdW+4pAXZC3B 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 X?KvYL$a9XjpO0^_Sgf1Pf(8EvW%6*! literal 0 HcmV?d00001 diff --git a/inst/extdata/standardJunctionModels_temp.txt b/inst/extdata/standardJunctionModels_temp.txt deleted file mode 100644 index 6a1848bc6b3787e20d2da03edce65ad12ced34e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204774 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
  1. 1;?x^&0PiiVE^<@;KHhIf^xu>R@v+k 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

    RGO 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

    HU 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

    9nTqE(wa#O3=c@YRq9l{?(wWgL_Io) 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 Qc1rvCe;|p;+LT@i0QBIgi~s-t From c1ab8afe9fec2fd16b525298960cf20f9d21120d Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 29 Oct 2024 14:25:20 +0800 Subject: [PATCH 142/189] Update quant test data due to assigndist changes --- R/bambu-quantify.R | 32 ++++++++++++++--------------- R/bambu-quantify_utilityFunctions.R | 1 + data-raw/DATASET.R | 17 +++++++++------ 3 files changed, 28 insertions(+), 22 deletions(-) diff --git a/R/bambu-quantify.R b/R/bambu-quantify.R index 4b125b8b..d996c189 100644 --- a/R/bambu-quantify.R +++ b/R/bambu-quantify.R @@ -31,25 +31,25 @@ bambu.quantify <- function(readClassDt, countMatrix, incompatibleCountMatrix, tx bambu.quantDT <- function(readClassDt = readClassDt, emParameters = list(degradationBias = TRUE, maxiter = 10000, conv = 10^(-2), minvalue = 10^(-8)), ncore = 1, verbose = FALSE) { - rcPreOut <- addAval(readClassDt, emParameters, verbose) - readClassDt <- rcPreOut[[1]] - outIni <- initialiseOutput(readClassDt) - readClassDt <- filterTxRc(readClassDt) - readClassDt <- assignGroups(readClassDt) - inputRcDt <- getInputList(readClassDt) - readClassDt <- split(readClassDt, by = "gene_grp_id") - start.ptm <- proc.time() - outEst <- abundance_quantification(inputRcDt, readClassDt, + rcPreOut <- addAval(readClassDt, emParameters, verbose) + readClassDt <- rcPreOut[[1]] + outIni <- initialiseOutput(readClassDt) + readClassDt <- filterTxRc(readClassDt) + readClassDt <- assignGroups(readClassDt) + inputRcDt <- getInputList(readClassDt) + readClassDt <- split(readClassDt, by = "gene_grp_id") + start.ptm <- proc.time() + outEst <- abundance_quantification(inputRcDt, readClassDt, maxiter = emParameters[["maxiter"]], conv = emParameters[["conv"]], minvalue = emParameters[["minvalue"]]) - end.ptm <- proc.time() - if (verbose) message("Finished EM estimation in ", - round((end.ptm - start.ptm)[3] / 60, 1), " mins.") - outEst <- modifyQuantOut(outEst,outIni) - theta_est <- rbind(rcPreOut[[2]],outEst) - theta_est <- removeDuplicates(theta_est) end.ptm <- proc.time() - return(theta_est) + if (verbose) message("Finished EM estimation in ", + round((end.ptm - start.ptm)[3] / 60, 1), " mins.") + outEst <- modifyQuantOut(outEst,outIni) + theta_est <- rbind(rcPreOut[[2]],outEst) + theta_est <- removeDuplicates(theta_est) + end.ptm <- proc.time() + return(theta_est) } diff --git a/R/bambu-quantify_utilityFunctions.R b/R/bambu-quantify_utilityFunctions.R index 0751e4ae..98fd0b21 100644 --- a/R/bambu-quantify_utilityFunctions.R +++ b/R/bambu-quantify_utilityFunctions.R @@ -205,6 +205,7 @@ addAval <- function(readClassDt, emParameters, verbose){ d_rateOut[1], d_mode = d_mode) }else{ d_rateOut <- rep(NA,2) + readClassDt$aval = 1 } end.ptm <- proc.time() if (verbose) message("Finished estimate degradation bias in ", diff --git a/data-raw/DATASET.R b/data-raw/DATASET.R index f62d05ec..161f6540 100755 --- a/data-raw/DATASET.R +++ b/data-raw/DATASET.R @@ -23,7 +23,8 @@ data1 <- data.table( txlen = c(546,546,2356,2356), rcWidth = c(300,540,1800,2300), minRC = rep(1,4), - GENEID = 1 + gene_sid = 1, + multi_align = c(FALSE, FALSE, FALSE, FALSE) ) data2 <- data.table( @@ -35,7 +36,8 @@ data2 <- data.table( txlen = c(546,546,2356,2356, 546,2356), rcWidth = c(300,540,1800,2300, 200, 200), minRC = rep(1,6), - GENEID = 2 + gene_sid = 2, + multi_align = c(FALSE, FALSE, FALSE, FALSE, TRUE, TRUE) ) data3 <- data.table( @@ -47,7 +49,8 @@ data3 <- data.table( txlen = c(546,546,2356,2356,2356, 546,2356), rcWidth = c(540,540,540,1800,2300, 200, 200), minRC = c(NA,NA,1,1,1,NA,1), - GENEID = 3 + gene_sid = 3, + multi_align = c(TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE) ) data4 <- data.table( @@ -59,7 +62,8 @@ data4 <- data.table( txlen = c(546,546,2356,2356,2356, 546,2356), rcWidth = c(540,540,540,1800,2300, 200, 200), minRC = c(NA,NA,1,1,1,NA,1), - GENEID = 4 + gene_sid = 4, + multi_align = c(TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE) ) data5 <- data.table( @@ -71,7 +75,8 @@ data5 <- data.table( txlen = c(546,546,2356,2356, 546,2356), rcWidth = c(1700,2200,1800,2300, 2000, 2000), minRC = rep(1,6), - GENEID = 5 + gene_sid = 5, + multi_align = c(FALSE, FALSE, FALSE, FALSE, TRUE, TRUE) ) @@ -104,7 +109,7 @@ seCombinedExtendedGeneExpected <- transcriptToGeneExpression(seCombinedExtended) ## prior models to use for scoreReadClass() and junctions() ##to train new ones see update_xgboost_models.R -defaultModels = list() +defaultModels = readRDS("./inst/extdata/defaultModels.rds") defaultModels$transcriptModelME = xgb.load("./inst/extdata/read_class_ME.model") defaultModels$transcriptModelSE = xgb.load("./inst/extdata/read_class_SE.model") From 5515c435ed5e97b7cb44ed7fbaec79c9992b98b4 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 29 Oct 2024 14:51:57 +0800 Subject: [PATCH 143/189] Update remaining test data --- R/bambu.R | 2 +- R/sysdata.rda | Bin 304427 -> 304319 bytes data-raw/DATASET.R | 4 ++-- ...rectRNA_replicate5_run1_chr9_1_1000000.rds | Bin 5320 -> 6392 bytes ...rectRNA_replicate5_run1_chr9_1_1000000.rds | Bin 4592 -> 4112 bytes ...rectRNA_replicate5_run1_chr9_1_1000000.rds | Bin 5148 -> 5608 bytes ...rectRNA_replicate5_run1_chr9_1_1000000.rds | Bin 5220 -> 5608 bytes ...rectRNA_replicate5_run1_chr9_1_1000000.rds | Bin 4332 -> 4492 bytes 8 files changed, 3 insertions(+), 3 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 68e6ae4a..e1569db2 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -190,7 +190,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, if(assignDist){ message("--- Start calculating equivilance classes ---") - if (is.character(readClassList)) readClassList <- readRDS(file = readClassList) + if (is.character(readClassList)) readClassList <- list(readRDS(file = readClassList)) #if(is.list(readClassList)) readClassList = readClassList[[1]] quantData = bplapply(readClassList, FUN = assignReadClasstoTranscripts, annotations = annotations, isoreParameters = isoreParameters, verbose = verbose, diff --git a/R/sysdata.rda b/R/sysdata.rda index 687f76bdede24705258d7595080b4557aba07d57..e7699bb44b5d411f6107d08946741ace57d841c4 100755 GIT binary patch literal 304319 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

    B$0Q}Hxp&+8QbMR)C zSugQE1-#da(I{Mb5e;{qW@T6ROOhcl4vcO0Yi2h!^fX|3^-;<+7v~2Qi4ErxJh2y@ z@ZTIQDCq!^+CPMurXV%4I8G-?lpqn(4s{H5=q~L5h!j1&tth^qfe04IJ>hp_YP!#NCPd1!UvnL^mWdU$EtLZPu{ioHj2VH z9YA%wdW5L>F<$xq-mS9di9kmfxl;lLb`<=7#21es0D>{ME$W%i+Q2{o5dd%i01yBU zgaCmc5~K#;fcLYs(D-|9zq7>k^VUP0Y)Lp-gDEXEvDdS?$^L%n!xa+Y>MGYCmYyzG zZox`K<;hAoCD-Wd2O5i?LVX5FyeI}BjM;fAX2Dy{VX7QZ4ny{QpH4)rB8f!L47mps zSMjCX`++0i>sR#HB&6A+iY3?`hQR=NC3pilCUU*c#PpXc>mXQpssA7_54h+uicL6&ab1Zg;~PA8adf>{T>$^nOWvxxBd&RB(>$ z0T*(QnSWSoK?@|&U~r?!HmIfHc(Kt2hvF;7)4(%k8z#Q%nQS-WyY$N6T145P^rd%Vs7F#W}SzNloc#oP+PVC=tc@_J$j01lA=M_dR{kRS;l z2yf#Js3%;*AnlRUX73Boo3VUJ`S&H@%kR448v@|2WhbLn|BwHd*`1^@jst$0Dmem% z5|vyF3YYg9tf|eYph%9?Eq5~4ne4OO}}!LCfY_anl8+607UQ?S0zB_RhZ=HR;5KwW#>6r#Cb&`QcI>R=d*H8;yCUepRu% z_EK-)X^rZC3>+Cqa1DtR?g6I1#^A&dZO+Oyb^J3y*iu`hFUb>HIzG%oB#kD2BNvz* z4L^tI)wkFPQrHpz0C7IPmTkqBj)xznu6sd&*~1SZh853$$?G5H`4Kr(zVe#X*xUVJ zjhR*!LMEA_)pVvO+ROw)83lwVYs!%fIpT-+pvPer?&W$eDXJLmrZgH?$*EFVqkez( ztD}7ABBlvzDh^;>DN9Hrk!}%qp_SPgT~rN2FsG~4&BtJ8>GeIlbpH!UxjHlwfes#6 zaX(X};K{Kn32o;#V6y*Ce!ES*x4ZJ4vJ3g$AIAN!KkO9pa&Q1ZGp>H~^WC**c)XY}N+cPWuu-wDO^t4UcYV8|eh-g$i;F zafJ4#3P<=mCS3Da08V^Lb^vmEtOUPRfIpd1Us$LC=g*}OkTurS65V3!T6F`@4SrGS z(_*eyvENak+6IwI@|sZAKb3nMAf>c0QiL<5mwT(upI@(PAI$89Y{2a83nPHIaiE@+ z0@aS~`%~j-)JBuTxHWS)2R7L&onETQ1~t-{-sikmH2n?daWLX4R~3`{7mMyBb@H$# z8aBZ|1y};F5CJ2id<)(&JON}Y{p*ASpkBnO3|$D}U$)f~LDXpRB!d?@{NpT{*i&_1 zqZ*VA+ark_rYx(>S7}tN=-RX8VhYWCd`kuY*gKO?aW{bn&jv7LC1gOJ5!+bPz?nyuSx`QiCD`l-$yEk?jQ8oN5B7NSQf@D0F zhkjzmN8l1nMRN_Ag=aAicGeREqEB4W*}{u0|NPLiOy%gW+xBL84oFQrG~2+U4+3ke zJ{{u)_xc-N`>EW^iGT3lvms0D&bMU8CTSPuL*WKV4}K0G7~!S`=j|G#i4CRT^U#H+ zwEYNW;M>2@D}ZQKcuah2%X&TAZZi@zNK47$!Kepeq$Ht0=Z*{?u6og0mgRM&0@8Z< zYGzKxENU=ljwmum=7zFe=Lqa{^>NB(sL z!dIgYFeiyT<(aQ{EM(N|S~of?)!ERmYlB5af;>tpPm7SgU`4a~lLUR&@9V$5G-l`+ zmuHA5yZ0VTS<>ZDwdc$(C7_qYpiS@w3&>f+6b6>ju^fjwtnC#ZxYe02mkXAouAS{F zBY-{#v!&F5<#N1UbFFF`>MAqvRZD)kXW+bYgLA!H4@-8bcYSg**@yWtQpg4z4!6

    V01GwSS3AW~4n= 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�UFcf4Kp-y>9VFf~KDN8aWo&Xj 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�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 EKoqAe;Q#;t diff --git a/data-raw/DATASET.R b/data-raw/DATASET.R index 161f6540..fc95dd12 100755 --- a/data-raw/DATASET.R +++ b/data-raw/DATASET.R @@ -229,9 +229,9 @@ saveRDS(readGrgList, file = "./inst/extdata/readGrgList_SGNex_A549_directRNA_rep annotations <- readRDS(system.file("extdata", "annotationGranges_txdbGrch38_91_chr9_1_1000000.rds", package = "bambu")) genomeSequence <- system.file("extdata", "Homo_sapiens.GRCh38.dna_sm.primary_assembly_chr9_1_1000000.fa", package = "bambu") -se <- bambu(reads = test.bam, annotations = annotations, genome = genomeSequence, discovery = FALSE, quant = FALSE)[[1]] +se <- bambu(reads = test.bam, annotations = annotations, genome = genomeSequence, discovery = FALSE, assignDist = FALSE, quant = FALSE)[[1]] saveRDS(se, file = "./inst/extdata/seReadClassUnstranded_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds", compress = "xz") -se <- bambu(reads = test.bam, annotations = annotations, genome = genomeSequence, stranded = TRUE, discovery = FALSE, quant = FALSE)[[1]] +se <- bambu(reads = test.bam, annotations = annotations, genome = genomeSequence, stranded = TRUE, assignDist = FALSE, discovery = FALSE, quant = FALSE)[[1]] saveRDS(se, file = "./inst/extdata/seReadClassStranded_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds", compress = "xz") se <- bambu(reads = test.bam, annotations = annotations, genome = genomeSequence) diff --git a/inst/extdata/seOutputCombinedExtended_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds b/inst/extdata/seOutputCombinedExtended_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds index d6254f4abf5549ae720a0841b5c84b58e5b94198..bb99b8427deb5ea438141b9143cb2622619e9f28 100644 GIT binary patch literal 6392 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 Cyyf%& literal 5148 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 K000000a;p)INitq diff --git a/inst/extdata/seOutput_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds b/inst/extdata/seOutput_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds index 990653dfae9cd6d10700a3778b02dc10ae216c47..680db58ccfe1098409f0a233662754cdd9e8fb42 100644 GIT binary patch literal 5608 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 Cyyf%& literal 5220 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 diff --git a/inst/extdata/seReadClassUnstranded_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds b/inst/extdata/seReadClassUnstranded_SGNex_A549_directRNA_replicate5_run1_chr9_1_1000000.rds index 9cc59afb4aaa57113138542b0b6e94e6222d1154..83a9af7583fe29164b1baba4f5034d94bd2cbc01 100644 GIT binary patch literal 4492 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 literal 4332 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 a0mUJ(`vCxizA3{#Fb#_W000000a;p}L0-=Q From 75a49f7dda5480d6af04e734b8c98bea6d08353d Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 29 Oct 2024 14:59:55 +0800 Subject: [PATCH 144/189] Update version message --- R/bambu.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/bambu.R b/R/bambu.R index e1569db2..60b11674 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -141,7 +141,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, trackReads = FALSE, returnDistTable = FALSE, lowMemory = FALSE, fusionMode = FALSE, verbose = FALSE, demultiplexed = FALSE, spatial = NULL, quantData = NULL, sampleNames = NULL, cleanReads = TRUE, dedupUMI = FALSE, clusters = NULL) { - message(paste0("Running Bambu-v", "3.2.4")) + message(paste0("Running Bambu-v", "3.3.0")) if(is.null(annotations)) { annotations = GRangesList() } else annotations <- checkInputs(annotations, reads, readClass.outputDir = rcOutDir, genomeSequence = genome, discovery = discovery, From f2d2d835aa794c80832a1ce3b97e6b30eb954410 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 29 Oct 2024 15:24:15 +0800 Subject: [PATCH 145/189] Add in preset modes --- R/bambu.R | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 60b11674..cd9e3a66 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -136,12 +136,30 @@ #' genome = fa.file, discovery = TRUE, quant = TRUE) #' @export bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, - opt.discovery = NULL, opt.em = NULL, rcOutDir = NULL, discovery = TRUE, + mode = NULL, opt.discovery = NULL, opt.em = NULL, rcOutDir = NULL, discovery = TRUE, assignDist = TRUE, quant = TRUE, stranded = FALSE, ncore = 1, yieldSize = NULL, trackReads = FALSE, returnDistTable = FALSE, lowMemory = FALSE, fusionMode = FALSE, verbose = FALSE, demultiplexed = FALSE, spatial = NULL, quantData = NULL, - sampleNames = NULL, cleanReads = TRUE, dedupUMI = FALSE, clusters = NULL) { + sampleNames = NULL, cleanReads = FALSE, dedupUMI = FALSE, clusters = NULL) { message(paste0("Running Bambu-v", "3.3.0")) + if(mode == "bulk"){ + lowMemory = TRUE + } + if(mode == "multiplexed"){ + if(is.null(demultiplex)) demultiplex = TRUE, + cleanReads = TRUE, + opt.em = list(degradationBias = FALSE), + quant = FALSE + } + if(mode == "fusion"){ + NDR = 1, + fusionMode = TRUE + } + if(mode == "debug"){ + verbose = TRUE, + trackReads = TRUE, + returnDistTable = TRUE + } if(is.null(annotations)) { annotations = GRangesList() } else annotations <- checkInputs(annotations, reads, readClass.outputDir = rcOutDir, genomeSequence = genome, discovery = discovery, From 09dcb4db1d094a385357f88bb368e4e0471a905b Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 29 Oct 2024 15:25:27 +0800 Subject: [PATCH 146/189] remove commas --- R/bambu.R | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index cd9e3a66..34d9a166 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -146,18 +146,18 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, lowMemory = TRUE } if(mode == "multiplexed"){ - if(is.null(demultiplex)) demultiplex = TRUE, - cleanReads = TRUE, - opt.em = list(degradationBias = FALSE), + if(is.null(demultiplex)) demultiplex = TRUE + cleanReads = TRUE + opt.em = list(degradationBias = FALSE) quant = FALSE } if(mode == "fusion"){ - NDR = 1, + NDR = 1 fusionMode = TRUE } if(mode == "debug"){ - verbose = TRUE, - trackReads = TRUE, + verbose = TRUE + trackReads = TRUE returnDistTable = TRUE } if(is.null(annotations)) { annotations = GRangesList() From c55383dd8268f3fa8024ad8bcd01c582448fc3b3 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 29 Oct 2024 17:02:30 +0800 Subject: [PATCH 147/189] Fix mode --- R/bambu.R | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 34d9a166..df4fe6cb 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -142,23 +142,25 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, fusionMode = FALSE, verbose = FALSE, demultiplexed = FALSE, spatial = NULL, quantData = NULL, sampleNames = NULL, cleanReads = FALSE, dedupUMI = FALSE, clusters = NULL) { message(paste0("Running Bambu-v", "3.3.0")) - if(mode == "bulk"){ - lowMemory = TRUE - } - if(mode == "multiplexed"){ - if(is.null(demultiplex)) demultiplex = TRUE - cleanReads = TRUE - opt.em = list(degradationBias = FALSE) - quant = FALSE - } - if(mode == "fusion"){ - NDR = 1 - fusionMode = TRUE - } - if(mode == "debug"){ - verbose = TRUE - trackReads = TRUE - returnDistTable = TRUE + if(!is.null(mode)){ + if(mode == "bulk"){ + lowMemory = TRUE + } + if(mode == "multiplexed"){ + if(is.null(demultiplex)) demultiplex = TRUE + cleanReads = TRUE + opt.em = list(degradationBias = FALSE) + quant = FALSE + } + if(mode == "fusion"){ + NDR = 1 + fusionMode = TRUE + } + if(mode == "debug"){ + verbose = TRUE + trackReads = TRUE + returnDistTable = TRUE + } } if(is.null(annotations)) { annotations = GRangesList() } else annotations <- checkInputs(annotations, reads, From 99d3148b700e0cf8e3fbf9cb1165b26e990676a1 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 4 Nov 2024 17:05:02 +0800 Subject: [PATCH 148/189] Fix reccomendNDR small change --- R/bambu-extendAnnotations-utilityExtend.R | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index cbdddcb6..2615ff24 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -68,7 +68,8 @@ filterTranscripts <- function(combinedTranscripts, min.sampleNumber){ combinedTranscripts$NSampleReadProp >= min.sampleNumber) } #combinedTranscripts = combinedTranscripts[filterSet,] - combinedTranscripts$maxTxScore[!filterSet] = 0 + combinedTranscripts$maxTxScore[!filterSet] = -1 + combinedTranscripts$maxTxScore.noFit[!filterSet] = -1 return(combinedTranscripts) } @@ -97,7 +98,9 @@ filterTranscriptsByAnnotation <- function(rowDataCombined, annotationGrangesList rowDataCombined[!notCompatibleIds,], exonRangesCombined[!notCompatibleIds]) rowDataCombined$maxTxScore[grepl("compatible", rowDataCombined$readClassType) & - rowDataCombined$readClassType != "equal:compatible"]=0 + rowDataCombined$readClassType != "equal:compatible"]=-1 + rowDataCombined$maxTxScore.noFit[grepl("compatible", rowDataCombined$readClassType) & + rowDataCombined$readClassType != "equal:compatible"]=-1 } #(2) remove transcripts below NDR threshold/identical junctions to annotations rowDataCombined = calculateNDROnTranscripts(rowDataCombined, @@ -153,16 +156,17 @@ filterTranscriptsByAnnotation <- function(rowDataCombined, annotationGrangesList #' @noRd recommendNDR <- function(combinedTranscripts, baselineFDR = 0.1, NDR = NULL, defaultModels = defaultModels, verbose = FALSE){ if(verbose) message("-- Predicting annotation completeness to determine NDR threshold --") + combinedTranscripts = combinedTranscripts[combinedTranscripts$maxTxScore.noFit >=0, ] #ignore filtered out read classes equal = combinedTranscripts$readClassType == "equal:compatible" equal[is.na(equal)] = FALSE - #add envirnment so poly() works attr(defaultModels$lmNDR[["terms"]], ".Environment") <- new.env(parent = parent.env(globalenv())) baseline = predict(defaultModels$lmNDR, newdata=data.frame(NDR=baselineFDR)) attr(defaultModels$lmNDR[["terms"]], ".Environment") = c() - NDRscores = calculateNDR(combinedTranscripts$maxTxScore.noFit, equal) score = combinedTranscripts$maxTxScore.noFit + score[is.na(score)] = 0 + NDRscores = calculateNDR(score, equal) NDR.rec = predict(lm(NDRscores~poly(score,3,raw=TRUE)), newdata=data.frame(score=baseline)) NDR.rec = round(NDR.rec,3) if(verbose) message("Recommended NDR for baseline FDR of ", baselineFDR, " = ", NDR.rec) @@ -219,7 +223,7 @@ calculateNDROnTranscripts <- function(combinedTranscripts, useTxScore = FALSE){ "for NDR precision stabilization.") message("NDR will be approximated as: (1 - Transcript Model Prediction Score)") } else combinedTranscripts$NDR = calculateNDR(combinedTranscripts$maxTxScore, equal) - combinedTranscripts$NDR[combinedTranscripts$maxTxScore==0] = 1 + combinedTranscripts$NDR[combinedTranscripts$maxTxScore==-1] = 1 return(combinedTranscripts) } From a605fe732ffa399051cdbf052c896c838978e77b Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 5 Nov 2024 09:38:59 +0800 Subject: [PATCH 149/189] Fix quantification when running bulk --- R/bambu-processReads.R | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index d64b2c68..6bce2b9c 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -83,12 +83,12 @@ bambu.processReads <- function(reads, annotations, genomeSequence, mcols(readGrgList[[i]])$BC = paste0(names(reads)[i], '_', mcols(readGrgList[[i]])$BC) } else{mcols(readGrgList[[i]])$BC = sampleNames[i]} mcols(readGrgList[[i]])$BC = as.factor(mcols(readGrgList[[i]])$BC) + if(!isFALSE(demultiplexed)){ + mcols(readGrgList[[i]])$sampleID = as.numeric(mcols(readGrgList[[i]])$BC) + } else {mcols(readGrgList[[i]])$sampleID = i} } readGrgList = do.call(c, readGrgList) mcols(readGrgList)$id <- seq_along(readGrgList) - if(!isFALSE(demultiplexed)){ - mcols(readGrgList)$sampleID = as.numeric(mcols(readGrgList)$BC) - } else {mcols(readGrgList)$sampleID = mcols(readGrgList)$BC} readClassList <- constructReadClasses(readGrgList, genomeSequence = genomeSequence,annotations = annotations, readClass.outputDir = readClass.outputDir, stranded = stranded, min.readCount = min.readCount, @@ -184,7 +184,7 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, mcols(readGrgList)$BC = as.factor(mcols(readGrgList)$BC) if(!isFALSE(demultiplexed)){ mcols(readGrgList)$sampleID = as.numeric(mcols(readGrgList)$BC) - } else {mcols(readGrgList)$sampleID = mcols(readGrgList)$BC} + } else {mcols(readGrgList)$sampleID = index} # construct read classes for each chromosome seperately se <- lowMemoryConstructReadClasses(readGrgList, genomeSequence, From 7a62db7ef0af5b270f10babb790f9914d19564c7 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 5 Nov 2024 10:20:58 +0800 Subject: [PATCH 150/189] restore returnDistTable --- R/bambu-assignDist.R | 5 ++++- R/bambu.R | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/R/bambu-assignDist.R b/R/bambu-assignDist.R index abd334ea..00e49ac9 100644 --- a/R/bambu-assignDist.R +++ b/R/bambu-assignDist.R @@ -2,7 +2,7 @@ #' @inheritParams bambu #' @import data.table #' @noRd -assignReadClasstoTranscripts <- function(readClassList, annotations, isoreParameters, verbose, demultiplexed, spatial) { +assignReadClasstoTranscripts <- function(readClassList, annotations, isoreParameters, verbose, demultiplexed, spatial, returnDistTable = FALSE) { metadata(readClassList)$readClassDist <- calculateDistTable(readClassList, annotations, isoreParameters, verbose) readClassList = splitReadClassFiles(readClassList) readClassDt <- genEquiRCs(metadata(readClassList)$readClassDist, annotations, verbose) @@ -26,6 +26,9 @@ assignReadClasstoTranscripts <- function(readClassList, annotations, isoreParame } metadata(quantData)$nonuniqueCounts = generateNonUniqueCounts(readClassDt, metadata(readClassList)$countMatrix, annotations) metadata(quantData)$readClassDt = readClassDt + if(returnDistTable){ + metadata(quantData)$distTable = metadata(readClassList)$readClassDist + } metadata(quantData)$countMatrix = metadata(readClassList)$countMatrix metadata(quantData)$incompatibleCountMatrix = metadata(readClassList)$incompatibleCountMatrix metadata(quantData)$sampleNames = metadata(readClassList)$sampleNames diff --git a/R/bambu.R b/R/bambu.R index df4fe6cb..00529e0c 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -214,7 +214,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, #if(is.list(readClassList)) readClassList = readClassList[[1]] quantData = bplapply(readClassList, FUN = assignReadClasstoTranscripts, annotations = annotations, isoreParameters = isoreParameters, verbose = verbose, - demultiplexed = demultiplexed, spatial = spatial, + demultiplexed = demultiplexed, spatial = spatial, returnDistTable = returnDistTable, BPPARAM = bpParameters) if (!quant) return(quantData) } From 10fd9052d9b648ad20e992f84138f8d4abd2d551 Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 5 Nov 2024 11:03:00 +0800 Subject: [PATCH 151/189] Return default degbias to on --- R/bambu_utilityFunctions.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index 932a7bcb..782b951e 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -46,7 +46,7 @@ setIsoreParameters <- function(isoreParameters){ #' setEmParameters #' @noRd setEmParameters <- function(emParameters){ - emParameters.default <- list(degradationBias = FALSE, maxiter = 10000, + emParameters.default <- list(degradationBias = TRUE, maxiter = 10000, conv = 10^(-2), minvalue = 10^(-8), sig.digit = 5) emParameters <- updateParameters(emParameters, emParameters.default) return(emParameters) From df6b4b329eb6310c1bc3e195a6a26475dfe3b4e4 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 11 Nov 2024 13:09:03 +0800 Subject: [PATCH 152/189] Restore trackreads --- R/bambu-assignDist.R | 15 +++++++++++---- R/bambu-quantify_utilityFunctions.R | 11 ++++++++++- R/bambu.R | 9 +++------ 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/R/bambu-assignDist.R b/R/bambu-assignDist.R index 00e49ac9..b82a07ad 100644 --- a/R/bambu-assignDist.R +++ b/R/bambu-assignDist.R @@ -2,7 +2,9 @@ #' @inheritParams bambu #' @import data.table #' @noRd -assignReadClasstoTranscripts <- function(readClassList, annotations, isoreParameters, verbose, demultiplexed, spatial, returnDistTable = FALSE) { +assignReadClasstoTranscripts <- function(readClassList, annotations, isoreParameters, + verbose, demultiplexed, spatial, + returnDistTable = FALSE, trackReads = TRUE) { metadata(readClassList)$readClassDist <- calculateDistTable(readClassList, annotations, isoreParameters, verbose) readClassList = splitReadClassFiles(readClassList) readClassDt <- genEquiRCs(metadata(readClassList)$readClassDist, annotations, verbose) @@ -26,12 +28,17 @@ assignReadClasstoTranscripts <- function(readClassList, annotations, isoreParame } metadata(quantData)$nonuniqueCounts = generateNonUniqueCounts(readClassDt, metadata(readClassList)$countMatrix, annotations) metadata(quantData)$readClassDt = readClassDt - if(returnDistTable){ - metadata(quantData)$distTable = metadata(readClassList)$readClassDist - } metadata(quantData)$countMatrix = metadata(readClassList)$countMatrix metadata(quantData)$incompatibleCountMatrix = metadata(readClassList)$incompatibleCountMatrix metadata(quantData)$sampleNames = metadata(readClassList)$sampleNames + if(returnDistTable){ + metadata(quantData)$distTable = metadata(readClassList)$readClassDist + } + if (trackReads){ + metadata(quantData)$readToTranscriptMap = + generateReadToTranscriptMap(readClassList, metadata(readClassList)$readClassDist, + annotations) + } return(quantData) } diff --git a/R/bambu-quantify_utilityFunctions.R b/R/bambu-quantify_utilityFunctions.R index 98fd0b21..0bb8c85d 100644 --- a/R/bambu-quantify_utilityFunctions.R +++ b/R/bambu-quantify_utilityFunctions.R @@ -68,7 +68,7 @@ genEquiRCsBasedOnObservedReads <- function(readClass){ width(unlisted_rowranges[unlisted_rowranges$exon_rank == 1,]), totalWidth = sum(width(rowRanges(readClass)))) distTable <- data.table(as.data.frame(metadata(readClass)$distTable))[!grepl("unidentified", annotationTxId), .(readClassId, - annotationTxId, readCount, GENEID, dist,equal,txid)] + annotationTxId, readCount, GENEID, dist,equal, compatible, txid)] distTable <- rcWidth[distTable, on = "readClassId"] # filter out multiple geneIDs mapped to the same readClass using rowData(se) compatibleData <- as.data.table(as.data.frame(rowData(readClass)), @@ -464,25 +464,34 @@ generateReadToTranscriptMap <- function(readClass, distTable, annotations){ if(!is.null(metadata(readClass)$readNames)) { read_id = metadata(readClass)$readNames} else { read_id = metadata(readClass)$readId} + print(1) #unpack and reverse the read class to read id relationship readOrder = order(unlist(rowData(readClass)$readIds)) lens = lengths(rowData(readClass)$readIds) rcIndex = seq_along(readClass) readToRC = rep(rcIndex, lens)[readOrder] read_id = read_id[(match(unlist(rowData(readClass)$readIds)[readOrder], metadata(readClass)$readId))] + print(2) #get annotation indexs + distTable = metadata(distTable)$distTable + print(head(distTable)) distTable$annotationTxId = match(distTable$annotationTxId, names(annotations)) + print(2.1) + print(head(distTable)) #match read classes with transcripts readClass_id = rownames(readClass)[readToRC] distTable$exClassById = NULL + print(3) equalMatches = as_tibble(distTable) %>% filter(equal) %>% group_by(readClassId) %>% summarise(annotationTxIds = list(annotationTxId)) equalMatches = equalMatches$annotationTxIds[match(readClass_id, equalMatches$readClassId)] + print(4) compatibleMatches = as_tibble(distTable) %>% filter(!equal & compatible) %>% group_by(readClassId) %>% summarise(annotationTxIds = list(annotationTxId)) compatibleMatches = compatibleMatches$annotationTxIds[match(readClass_id, compatibleMatches$readClassId)] + print(5) readToTranscriptMap = tibble(readId=read_id, equalMatches = equalMatches, compatibleMatches = compatibleMatches) return(readToTranscriptMap) } diff --git a/R/bambu.R b/R/bambu.R index 00529e0c..fb4bfe25 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -215,6 +215,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, quantData = bplapply(readClassList, FUN = assignReadClasstoTranscripts, annotations = annotations, isoreParameters = isoreParameters, verbose = verbose, demultiplexed = demultiplexed, spatial = spatial, returnDistTable = returnDistTable, + trackReads = trackReads, BPPARAM = bpParameters) if (!quant) return(quantData) } @@ -277,15 +278,11 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, } countsSeCompressed.all = c(countsSeCompressed.all, countsSeCompressed) } - countsSeCompressed.all$colnames = ColNames - #return(countsSeCompressed.all) + countsSeCompressed.all$colnames = ColNames countsSe <- combineCountSes(countsSeCompressed.all, annotations) #metadata(countsSe)$warnings = warnings - # if (trackReads) metadata(seOutput)$readToTranscriptMap = - # generateReadToTranscriptMap(readClass, metadata(readClassDist)$distTable, - # annotations) - # if (returnDistTable) metadata(seOutput)$distTable = metadata(readClassDist)$distTable + ColData = generateColData(colnames(countsSe), clusters, demultiplexed, spatial) colData(countsSe) = ColData colnames(countsSe) = ColData[,1] From 5d0af93dda313d499bf59c54f7b12f62dd9e9d29 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 11 Nov 2024 13:09:17 +0800 Subject: [PATCH 153/189] Add in descriptions for new arguments --- README.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 258f4970..80f6c08d 100755 --- a/README.md +++ b/README.md @@ -476,7 +476,30 @@ se <- bambu(reads = fusionAligned.bam, annotations = fusionAnnotations, genome = | discovery | A logical variable indicating whether annotations are to be extended for quantification, defaults to TRUE. | | quant | A logical variable indicating whether quantification will be performed, defaults to TRUE. | | verbose | A logical variable indicating whether processing messages will be printed. | -| lowMemory | Reads will be processed by chromosomes instead of all together when lowMemory is specified. This option provides an efficient way to process big samples. | +| lowMemory | A logical variable indicating if each input bam file will be processed seperately (TRUE) or all are read in and processed together (FALSE), defaults to TRUE | +| mode | A string that will set other input arguments ['bulk', 'multiplexed', 'fusion', 'debug'] +bulk - lowMemory = TRUE +multiplexed - + demultiplex = TRUE + cleanReads = TRUE + opt.em = list(degradationBias = FALSE) + quant = FALSE + +fusion + NDR = 1 + fusionMode = TRUE +debug + verbose = TRUE + trackReads = TRUE + returnDistTable = TRUE | +| demultiplexed | A logical variable indicating whether the input bam file is demultiplexed. The barcode and umi either need to be present in the read name or the $BC and $UG tags, defaults to FALSE. Alternatively a path to a csv file can be provided where column 1 is read names, column 2 is barcodes, and column 3 is UMI. | +| spatial | A path to the barcode whitelist containing X and Y coordinates, defaults to null. | +| assignDist | A logical variable indicating whether read class to transcript assignment will be performed, defaults to TRUE. | +| quantData | Advanced use only. A list of se outputs from the assignDist step. Used only to run quantification | +| sampleNames | A vector of strings representing the sample name associated with each input bam. bam files with the same sample name will be combined | +| cleanReads | A logical variable indicating whether only the first sequenced alignment in a read should be kept. This helps to remove chimeric reads, but will remove alignments from fusion genes, defaults to FALSE. | +| dedupUMI | A logical variable indicating whether UMI deduplication is performed. The longest read per UMI will be used and the rest discarded, defaults to FALSE.| +| clusters | Either a list containing the barcodes for each cluster, or a path to a csv file containg the barcode to cluster mapping. When provided, clusters will be used during discovery and EM quant steps, defaults to null. | ### setNDR() arguments |argument|description| From 0b455ef3370eb99ff4ec15f2932bd52c5554a2c4 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 11 Nov 2024 14:48:36 +0800 Subject: [PATCH 154/189] Clean up cluster discovery --- R/bambu-extendAnnotations-utilityExtend.R | 52 +++++++++++++++++++++ R/bambu.R | 55 +++-------------------- 2 files changed, 57 insertions(+), 50 deletions(-) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index 5f0665a8..14257109 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -873,4 +873,56 @@ setNDR = function(extendedAnnotations, NDR = NULL, includeRef = FALSE, prefix = metadata(extendedAnnotations)$NDRthreshold = NDR return(extendedAnnotations) +} + +isore.extendAnnotations.clusters <- function(readClassList, annotations, clusters, NDR, isoreParameters, stranded, bpParameters, fusionMode, verbose = FALSE){ + message("--- Start extending annotations for clusters ---") + #if clustering is a csv, create a list with the barcodes for each cluster + #csv must have two cols with heading barcode, cluster + if(!is.list(clusters)){ + clusters = read.csv(clusters) + clusters = clusters %>% group_by(cluster) %>% summarise(barcodes = list(barcode)) + clusters = clusters$cluster + clusters = clusters$barcodes + names(clusters) = clusters + } + annotations.clusters = list() + rcfs.clusters = list() + clusters.rc = splitReadClassFilesByRC(readClassList[[1]]) + txScores = c() + for(i in seq_along(clusters)){ + print(names(clusters)[i]) + ###TODO need to account for the sample name here which is added to the barcode + index = match(clusters[[i]],gsub('demultiplexed','',metadata(readClassList[[1]])$samples)) + index = index[!is.na(index)] + print(length(index)) + if(length(index)<20) next + rcf.counts = clusters.rc[,index] + rcf.filt = readClassList[[1]][rowSums(rcf.counts)>0,] + rowData(rcf.filt)$readCount = rowSums(rcf.counts)[rowSums(rcf.counts)>0] + countsTBL = calculateGeneProportion(counts=mcols(rcf.filt)$readCount, + geneIds=mcols(rcf.filt)$GENEID) + rowData(rcf.filt)$geneReadProp = countsTBL$geneReadProp + rowData(rcf.filt)$geneReadCount = countsTBL$geneReadCount + rowData(rcf.filt)$startSD = 0 + rowData(rcf.filt)$endSD = 0 + rowData(rcf.filt)$readCount.posStrand = 0 + thresholdIndex = which(rowData(rcf.filt)$readCount>=isoreParameters$min.readCount) + model = trainBambu(rcf.filt, verbose = verbose, min.readCount = isoreParameters$min.readCount) + txScore = getTranscriptScore(rowData(rcf.filt)[thresholdIndex,], model, + defaultModels) + rowData(rcf.filt)$txScore = rep(NA,nrow(rcf.filt)) + rowData(rcf.filt)$txScore[thresholdIndex] = txScore + #txScores = cbind(txScores, rowData(rcf.filt)$txScore) + rcfs.clusters[[names(clusters)[i]]] = rcf.filt + annotations.clusters[[names(clusters)[i]]] <- bambu.extendAnnotations(list(rcf.filt), annotations, NDR, + isoreParameters, stranded, bpParameters, fusionMode, verbose) + } + if(length(rcfs.clusters)>0){ + print("--- Merging all individual clusters ---") + annotations.clusters[["merged"]] <- bambu.extendAnnotations(rcfs.clusters, annotations, NDR, + isoreParameters, stranded, bpParameters, fusionMode, verbose) + } + + return(annotations.clusters) } \ No newline at end of file diff --git a/R/bambu.R b/R/bambu.R index ef854aef..66314721 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -205,59 +205,14 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, isoreParameters, stranded, bpParameters, fusionMode, verbose) metadata(extendedAnnotations)$warnings = warnings - #### split rcf into clusters + #### cluster based transcript discovery if(!is.null(clusters)){ - message("--- Start extending annotations for clusters ---") - #if clustering is a csv, create a list with the barcodes for each cluster - #csv must have two cols with heading barcode, cluster - if(!is.list(clusters)){ - clusters = read.csv(clusters) - clusters = clusters %>% group_by(cluster) %>% summarise(barcodes = list(barcode)) - clusters = clusters$cluster - clusters = clusters$barcodes - names(clusters) = clusters - } - annotations.clusters = list() - rcfs.clusters = list() - clusters.rc = splitReadClassFilesByRC(readClassList[[1]]) - txScores = c() - for(i in seq_along(clusters)){ - print(names(clusters)[i]) - ###TODO need to account for the sample name here which is added to the barcode - index = match(clusters[[i]],gsub('demultiplexed','',metadata(rcf[[1]])$samples)) - index = index[!is.na(index)] - print(length(index)) - if(length(index)<20) next - rcf.counts = clusters.rc[,index] - rcf.filt = readClassList[[1]][rowSums(rcf.counts)>0,] - rowData(rcf.filt)$readCount = rowSums(rcf.counts)[rowSums(rcf.counts)>0] - countsTBL = calculateGeneProportion(counts=mcols(rcf.filt)$readCount, - geneIds=mcols(rcf.filt)$GENEID) - rowData(rcf.filt)$geneReadProp = countsTBL$geneReadProp - rowData(rcf.filt)$geneReadCount = countsTBL$geneReadCount - rowData(rcf.filt)$startSD = 0 - rowData(rcf.filt)$endSD = 0 - rowData(rcf.filt)$readCount.posStrand = 0 - thresholdIndex = which(rowData(rcf.filt)$readCount>=2) - model = trainBambu(rcf.filt, verbose = TRUE, min.readCount = 2) - txScore = getTranscriptScore(rowData(rcf.filt)[thresholdIndex,], model, - defaultModels) - rowData(rcf.filt)$txScore = rep(NA,nrow(rcf.filt)) - rowData(rcf.filt)$txScore[thresholdIndex] = txScore - #txScores = cbind(txScores, rowData(rcf.filt)$txScore) - rcfs.clusters[[names(clusters)[i]]] = rcf.filt - annotations.clusters[[names(clusters)[i]]] <- bambu.extendAnnotations(list(rcf.filt), annotations, NDR, - isoreParameters, stranded, bpParameters, fusionMode, verbose) - } - if(length(rcfs.clusters)>0){ - print("--- Merging all individual clusters ---") - annotations.clusters[["merged"]] <- bambu.extendAnnotations(rcfs.clusters, annotations, NDR, - isoreParameters, stranded, bpParameters, fusionMode, verbose) - } - metadata(extendedAnnotations)$clusters = annotations.clusters + annotations.clusters = isore.extendAnnotations.clusters(readClassList, annotations, clusters, NDR, + isoreParameters, stranded, bpParameters, fusionMode, verbose = FALSE) + metadata(extendedAnnotations)$clusters = annotations.clusters } annotations = extendedAnnotations - + if (!quant & !assignDist) return(annotations) } From 11a8d8b0b2be4db409d5bb593582e6c3d1f4d55d Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 22 Nov 2024 18:00:34 +0800 Subject: [PATCH 155/189] Fix issue with lowMem and multiple samples --- R/bambu-processReads.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 06c83eb9..29555b23 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -63,7 +63,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, trackReads = trackReads, fusionMode = fusionMode, - demultiplexed = demultiplexed, cleanReads = cleanReads, dedupUMI = dedupUMI, index = i, barcodesToFilter = barcodesToFilter)}, + demultiplexed = demultiplexed, cleanReads = cleanReads, dedupUMI = dedupUMI, index = 1, barcodesToFilter = barcodesToFilter)}, BPPARAM = bpParameters) } else { readGrgList <- bplapply(seq_along(reads), function(i) { From f8053cf25dfd40a193f25b56f5354d1e684d58bb Mon Sep 17 00:00:00 2001 From: Andre Date: Wed, 4 Dec 2024 10:54:39 +0800 Subject: [PATCH 156/189] Fix formatting in docu --- README.md | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/README.md b/README.md index 80f6c08d..f03e31cf 100755 --- a/README.md +++ b/README.md @@ -477,21 +477,7 @@ se <- bambu(reads = fusionAligned.bam, annotations = fusionAnnotations, genome = | quant | A logical variable indicating whether quantification will be performed, defaults to TRUE. | | verbose | A logical variable indicating whether processing messages will be printed. | | lowMemory | A logical variable indicating if each input bam file will be processed seperately (TRUE) or all are read in and processed together (FALSE), defaults to TRUE | -| mode | A string that will set other input arguments ['bulk', 'multiplexed', 'fusion', 'debug'] -bulk - lowMemory = TRUE -multiplexed - - demultiplex = TRUE - cleanReads = TRUE - opt.em = list(degradationBias = FALSE) - quant = FALSE - -fusion - NDR = 1 - fusionMode = TRUE -debug - verbose = TRUE - trackReads = TRUE - returnDistTable = TRUE | +| mode | A string that will set other input arguments ['bulk', 'multiplexed', 'fusion', 'debug']
    bulk -
        lowMemory = TRUE
    multiplexed -
        demultiplex = TRUE
        cleanReads = TRUE
        opt.em = list(degradationBias = FALSE)
        quant = FALSE
    fusion -
        NDR = 1
        fusionMode = TRUE
    debug -
        verbose = TRUE
        trackReads = TRUE
        returnDistTable = TRUE | | demultiplexed | A logical variable indicating whether the input bam file is demultiplexed. The barcode and umi either need to be present in the read name or the $BC and $UG tags, defaults to FALSE. Alternatively a path to a csv file can be provided where column 1 is read names, column 2 is barcodes, and column 3 is UMI. | | spatial | A path to the barcode whitelist containing X and Y coordinates, defaults to null. | | assignDist | A logical variable indicating whether read class to transcript assignment will be performed, defaults to TRUE. | From 1ac5e4b3103c26e0c31a354f015093d9f6758de8 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 5 Dec 2024 10:43:18 +0800 Subject: [PATCH 157/189] returnDistTable now works when quant = TRUE --- R/bambu.R | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 66314721..8205f72b 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -260,7 +260,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, iter = clustering } else{ #if clusters is a list - if(length(quantDatas)>1){iter = clusters[[i]] #lowMemory mode + if(length(quantData)>1){iter = clusters[[i]] #lowMemory mode }else(iter = do.call(c,clusters)) } } @@ -275,7 +275,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, incompatibleCountMatrix = data.table(GENEID.i = as.numeric(rownames(metadata(quantData_i)$incompatibleCountMatrix)), counts = incompatibleCountMatrix), txid.index = mcols(annotations)$txid, GENEIDs = GENEIDs.i, isoreParameters = isoreParameters, emParameters = emParameters, trackReads = trackReads, - returnDistTable = returnDistTable, verbose = verbose))}, + verbose = verbose))}, BPPARAM = bpParameters) end.ptm <- proc.time() message("Total Time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") @@ -288,7 +288,13 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, } countsSeCompressed.all$colnames = ColNames countsSe <- combineCountSes(countsSeCompressed.all, annotations) - + if(returnDistTable){ + distTables = list() + for(i in seq_along(quantData)){ + distTables[[i]] = metadata(quantData[[i]])$distTable + } + metadata(countsSe)$distTables = distTables + } #metadata(countsSe)$warnings = warnings ColData = generateColData(colnames(countsSe), clusters, demultiplexed, spatial) From 5e5718864130bf03d0dbb682708f9d77efae8a19 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 5 Dec 2024 10:45:50 +0800 Subject: [PATCH 158/189] max recommended NDR is now 0.999 --- R/bambu-extendAnnotations-utilityExtend.R | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index 14257109..338ea822 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -169,8 +169,9 @@ recommendNDR <- function(combinedTranscripts, baselineFDR = 0.1, NDR = NULL, def NDRscores = calculateNDR(score, equal) NDR.rec = predict(lm(NDRscores~poly(score,3,raw=TRUE)), newdata=data.frame(score=baseline)) NDR.rec = round(NDR.rec,3) + if(NDR.rec > 1){NDR.rec = 0.999} + if (NDR.rec < 0) {NDR.rec = 0} if(verbose) message("Recommended NDR for baseline FDR of ", baselineFDR, " = ", NDR.rec) - if (NDR.rec < 0) NDR.rec = 0 if(NDR.rec > 0.5){ message("A high NDR threshold is being recommended by Bambu indicating high levels of novel transcripts, ", "limiting the performance of the trained model") From 22c169c286f8c9d2c5bfc30b28b620884cfed63a Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 5 Dec 2024 11:53:08 +0800 Subject: [PATCH 159/189] Return rcOutDir functionality --- R/bambu-assignDist.R | 1 + R/bambu-processReads.R | 40 +++++++++++++++++----------------------- R/bambu.R | 2 -- 3 files changed, 18 insertions(+), 25 deletions(-) diff --git a/R/bambu-assignDist.R b/R/bambu-assignDist.R index b82a07ad..1408acc1 100644 --- a/R/bambu-assignDist.R +++ b/R/bambu-assignDist.R @@ -5,6 +5,7 @@ assignReadClasstoTranscripts <- function(readClassList, annotations, isoreParameters, verbose, demultiplexed, spatial, returnDistTable = FALSE, trackReads = TRUE) { + if (is.character(readClassList)) readClassList <- readRDS(file = readClassList) metadata(readClassList)$readClassDist <- calculateDistTable(readClassList, annotations, isoreParameters, verbose) readClassList = splitReadClassFiles(readClassList) readClassDt <- genEquiRCs(metadata(readClassList)$readClassDist, annotations, verbose) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 29555b23..8814ab84 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -58,7 +58,6 @@ bambu.processReads <- function(reads, annotations, genomeSequence, readClassList <- bplapply(seq_along(reads), function(i) { bambu.processReadsByFile(bam.file = reads[i], genomeSequence = genomeSequence,annotations = annotations, - readClass.outputDir = readClass.outputDir, stranded = stranded, min.readCount = min.readCount, fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, @@ -69,7 +68,6 @@ bambu.processReads <- function(reads, annotations, genomeSequence, readGrgList <- bplapply(seq_along(reads), function(i) { bambu.readsByFile(bam.file = reads[i], genomeSequence = genomeSequence,annotations = annotations, - readClass.outputDir = readClass.outputDir, stranded = stranded, min.readCount = min.readCount, fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, @@ -90,7 +88,6 @@ bambu.processReads <- function(reads, annotations, genomeSequence, readGrgList = do.call(c, readGrgList) mcols(readGrgList)$id <- seq_along(readGrgList) readClassList <- constructReadClasses(readGrgList, genomeSequence = genomeSequence,annotations = annotations, - readClass.outputDir = readClass.outputDir, stranded = stranded, min.readCount = min.readCount, fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, @@ -102,23 +99,20 @@ bambu.processReads <- function(reads, annotations, genomeSequence, readClassList = list(readClassList) } - - - # TODO return output - # if (!is.null(readClass.outputDir)) { - # readClassFile <- paste0(readClass.outputDir,names(bam.file), - # "_readClassSe.rds") - # if (file.exists(readClassFile)) { - # show(paste(readClassFile, "exists, will be overwritten")) - # warning(readClassFile, "exists, will be overwritten") - # } else { - # readClassFile <- BiocFileCache::bfcnew(BiocFileCache::BiocFileCache( - # readClass.outputDir, ask = FALSE), - # paste0(names(bam.file),"_readClassSe"), ext = ".rds") - # } - # saveRDS(se, file = readClassFile) - # se <- readClassFile - # } + if (!is.null(readClass.outputDir)) { + for(i in seq_along(readClassList)){ + readClassFile = "combinedSamples" + if(lowMemory){ + readClassFile <- metadata(readClassList[[i]])$sampleNames + } + readClassFile <- BiocFileCache::bfcnew(BiocFileCache::BiocFileCache( + readClass.outputDir, ask = FALSE), + paste0(readClassFile,"_readClassSe"), ext = ".rds") + saveRDS(readClassList[[i]], file = readClassFile) + readClassList[[i]] <- readClassFile + } + + } #TODO don't output list, current there because discovery needs it return(readClassList) } @@ -128,7 +122,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, #' @importFrom GenomeInfoDb seqlevels seqlevels<- keepSeqlevels #' @noRd bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, - readClass.outputDir = NULL, yieldSize = NULL, stranded = FALSE, min.readCount = 2, + yieldSize = NULL, stranded = FALSE, min.readCount = 2, fitReadClassModel = TRUE, min.exonOverlap = 10, defaultModels = NULL, returnModel = FALSE, verbose = FALSE, lowMemory = FALSE, trackReads = FALSE, fusionMode = FALSE, demultiplexed = FALSE, cleanReads = FALSE, dedupUMI = FALSE, index = 0, barcodesToFilter = NULL) { @@ -220,7 +214,7 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, #' @importFrom GenomeInfoDb seqlevels seqlevels<- keepSeqlevels #' @noRd bambu.readsByFile <- function(bam.file, genomeSequence, annotations, - readClass.outputDir = NULL, yieldSize = NULL, stranded = FALSE, min.readCount = 2, + yieldSize = NULL, stranded = FALSE, min.readCount = 2, fitReadClassModel = TRUE, min.exonOverlap = 10, defaultModels = NULL, returnModel = FALSE, verbose = FALSE, trackReads = FALSE, fusionMode = FALSE, demultiplexed = FALSE, cleanReads = TRUE, dedupUMI = FALSE, index = 0, barcodesToFilter = NULL) { @@ -291,7 +285,7 @@ bambu.readsByFile <- function(bam.file, genomeSequence, annotations, } constructReadClasses <- function(readGrgList, genomeSequence, annotations, - readClass.outputDir = NULL, stranded = FALSE, min.readCount = 2, + stranded = FALSE, min.readCount = 2, fitReadClassModel = TRUE, min.exonOverlap = 10, defaultModels = NULL, returnModel = FALSE, verbose = FALSE, trackReads = FALSE, fusionMode = FALSE){ warnings = c() ###TODO diff --git a/R/bambu.R b/R/bambu.R index 8205f72b..e6a1f212 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -218,8 +218,6 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, if(assignDist){ message("--- Start calculating equivilance classes ---") - if (is.character(readClassList)) readClassList <- list(readRDS(file = readClassList)) - #if(is.list(readClassList)) readClassList = readClassList[[1]] quantData = bplapply(readClassList, FUN = assignReadClasstoTranscripts, annotations = annotations, isoreParameters = isoreParameters, verbose = verbose, demultiplexed = demultiplexed, spatial = spatial, returnDistTable = returnDistTable, From 4de83925fd9a78f71eeac32c338f1ffa06f6f87a Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 5 Dec 2024 14:23:48 +0800 Subject: [PATCH 160/189] return distTable now returns intermediate distTable --- R/bambu-assignDist.R | 4 ++-- R/bambu_utilityFunctions.R | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/R/bambu-assignDist.R b/R/bambu-assignDist.R index 1408acc1..ef44b127 100644 --- a/R/bambu-assignDist.R +++ b/R/bambu-assignDist.R @@ -6,7 +6,7 @@ assignReadClasstoTranscripts <- function(readClassList, annotations, isoreParame verbose, demultiplexed, spatial, returnDistTable = FALSE, trackReads = TRUE) { if (is.character(readClassList)) readClassList <- readRDS(file = readClassList) - metadata(readClassList)$readClassDist <- calculateDistTable(readClassList, annotations, isoreParameters, verbose) + metadata(readClassList)$readClassDist <- calculateDistTable(readClassList, annotations, isoreParameters, verbose, returnDistTable) readClassList = splitReadClassFiles(readClassList) readClassDt <- genEquiRCs(metadata(readClassList)$readClassDist, annotations, verbose) readClassDt$eqClass.match = match(readClassDt$eqClassById,metadata(readClassList)$eqClassById) @@ -33,7 +33,7 @@ assignReadClasstoTranscripts <- function(readClassList, annotations, isoreParame metadata(quantData)$incompatibleCountMatrix = metadata(readClassList)$incompatibleCountMatrix metadata(quantData)$sampleNames = metadata(readClassList)$sampleNames if(returnDistTable){ - metadata(quantData)$distTable = metadata(readClassList)$readClassDist + metadata(quantData)$distTable = metadata(metadata(readClassList)$readClassDist)$distTableOld } if (trackReads){ metadata(quantData)$readToTranscriptMap = diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index 782b951e..db8a4626 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -225,13 +225,14 @@ handleWarnings <- function(readClassList, verbose){ } #' Calculate the dist table used for Bambu Quantification -calculateDistTable <- function(readClassList, annotations, isoreParameters, verbose){ +calculateDistTable <- function(readClassList, annotations, isoreParameters, verbose, returnDistTable){ readClassDist <- isore.estimateDistanceToAnnotations(readClassList, annotations, min.exonDistance = isoreParameters[["min.exonDistance"]], min.primarySecondaryDist = isoreParameters[['min.primarySecondaryDist']], min.primarySecondaryDistStartEnd = isoreParameters[['min.primarySecondaryDistStartEnd2']], verbose = verbose) metadata(readClassDist)$distTable <- modifyIncompatibleAssignment(metadata(readClassDist)$distTable) + if(returnDistTable) metadata(readClassDist)$distTableOld = metadata(readClassDist)$distTable #convert string gene ids into index to save memory GENEIDs = factor(unique(mcols(annotations)$GENEID)) GENEID.i = as.numeric(GENEIDs) From 03e564b9e039e0051604e7800f952ade9f87abcf Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 16 Dec 2024 09:48:41 +0800 Subject: [PATCH 161/189] lowMemory now processByBam and processByChromosome --- R/bambu-processReads.R | 37 ++++++++++++++++++++++++++++--------- R/bambu.R | 11 ++++++++--- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 8814ab84..0bd8bc54 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -15,7 +15,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, readClass.outputDir=NULL, yieldSize=1000000, bpParameters, stranded=FALSE, verbose=FALSE, isoreParameters = setIsoreParameters(NULL), - lowMemory=FALSE, trackReads = trackReads, fusionMode = fusionMode, + processByChromosome = FALSE, processByBam = TRUE, trackReads = trackReads, fusionMode = fusionMode, demultiplexed = FALSE, cleanReads = FALSE, dedupUMI = FALSE, sampleNames = NULL, barcodesToFilter = NULL) { genomeSequence <- checkInputSequence(genomeSequence) # ===# create BamFileList object from character #===# @@ -54,14 +54,14 @@ bambu.processReads <- function(reads, annotations, genomeSequence, returnModel = isoreParameters[["returnModel"]] min.exonOverlap = isoreParameters[["min.exonOverlap"]] - if(lowMemory){ + if(processByBam){ readClassList <- bplapply(seq_along(reads), function(i) { bambu.processReadsByFile(bam.file = reads[i], genomeSequence = genomeSequence,annotations = annotations, stranded = stranded, min.readCount = min.readCount, fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, - trackReads = trackReads, fusionMode = fusionMode, + processByChromosome = processByChromosome, trackReads = trackReads, fusionMode = fusionMode, demultiplexed = demultiplexed, cleanReads = cleanReads, dedupUMI = dedupUMI, index = 1, barcodesToFilter = barcodesToFilter)}, BPPARAM = bpParameters) } else { @@ -91,7 +91,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, stranded = stranded, min.readCount = min.readCount, fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, - trackReads = trackReads, fusionMode = fusionMode) + processByChromosome = processByChromosome, trackReads = trackReads, fusionMode = fusionMode) metadata(readClassList)$samples = names(reads) metadata(readClassList)$sampleNames = names(reads) @@ -124,7 +124,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, yieldSize = NULL, stranded = FALSE, min.readCount = 2, fitReadClassModel = TRUE, min.exonOverlap = 10, defaultModels = NULL, returnModel = FALSE, - verbose = FALSE, lowMemory = FALSE, trackReads = FALSE, fusionMode = FALSE, demultiplexed = FALSE, + verbose = FALSE, processByChromosome = FALSE, trackReads = FALSE, fusionMode = FALSE, demultiplexed = FALSE, cleanReads = FALSE, dedupUMI = FALSE, index = 0, barcodesToFilter = NULL) { if(verbose) message(names(bam.file)[1]) readGrgList <- prepareDataFromBam(bam.file[[1]], verbose = verbose, yieldSize = yieldSize, use.names = trackReads, demultiplexed = demultiplexed, cleanReads = cleanReads, dedupUMI = dedupUMI) @@ -182,9 +182,18 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, } else {mcols(readGrgList)$sampleID = index} # construct read classes for each chromosome seperately - se <- lowMemoryConstructReadClasses(readGrgList, genomeSequence, + if(processByChromosome){ + se <- lowMemoryConstructReadClasses(readGrgList, genomeSequence, annotations, stranded, verbose,bam.file) + } else{ + unlisted_junctions <- unlistIntrons(readGrgList, use.ids = TRUE) + uniqueJunctions <- isore.constructJunctionTables(unlisted_junctions, + annotations,genomeSequence, stranded = stranded, verbose = verbose) + se <- isore.constructReadClasses(readGrgList, + unlisted_junctions, uniqueJunctions, runName = "TODO", + annotations, stranded, verbose) + } metadata(se)$warnings = warnings if(trackReads){ @@ -287,12 +296,22 @@ bambu.readsByFile <- function(bam.file, genomeSequence, annotations, constructReadClasses <- function(readGrgList, genomeSequence, annotations, stranded = FALSE, min.readCount = 2, fitReadClassModel = TRUE, min.exonOverlap = 10, defaultModels = NULL, returnModel = FALSE, - verbose = FALSE, trackReads = FALSE, fusionMode = FALSE){ + verbose = FALSE, processByChromosome = FALSE, trackReads = FALSE, fusionMode = FALSE){ warnings = c() ###TODO - # construct read classes for each chromosome seperately - se <- lowMemoryConstructReadClasses(readGrgList, genomeSequence, + + if(processByChromosome){ + # construct read classes for each chromosome seperately + se <- lowMemoryConstructReadClasses(readGrgList, genomeSequence, annotations, stranded, verbose,"TODO", fusionMode) + } else{ + unlisted_junctions <- unlistIntrons(readGrgList, use.ids = TRUE) + uniqueJunctions <- isore.constructJunctionTables(unlisted_junctions, + annotations,genomeSequence, stranded = stranded, verbose = verbose) + se <- isore.constructReadClasses(readGrgList, + unlisted_junctions, uniqueJunctions, runName = "TODO", + annotations, stranded, verbose) + } metadata(se)$warnings = warnings if(trackReads){ metadata(se)$readNames = names(readGrgList) diff --git a/R/bambu.R b/R/bambu.R index e6a1f212..0471c14b 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -140,17 +140,20 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, assignDist = TRUE, quant = TRUE, stranded = FALSE, ncore = 1, yieldSize = NULL, trackReads = FALSE, returnDistTable = FALSE, lowMemory = FALSE, fusionMode = FALSE, verbose = FALSE, demultiplexed = FALSE, spatial = NULL, quantData = NULL, - sampleNames = NULL, cleanReads = FALSE, dedupUMI = FALSE, barcodesToFilter = NULL, clusters = NULL) { + sampleNames = NULL, cleanReads = FALSE, dedupUMI = FALSE, barcodesToFilter = NULL, clusters = NULL, + processByChromosome = FALSE, processByBam = TRUE) { message(paste0("Running Bambu-v", "3.3.0")) if(!is.null(mode)){ if(mode == "bulk"){ - lowMemory = TRUE + processByChromosome = FALSE + processByBam = TRUE } if(mode == "multiplexed"){ if(is.null(demultiplex)) demultiplex = TRUE cleanReads = TRUE opt.em = list(degradationBias = FALSE) quant = FALSE + processByChromosome = TRUE } if(mode == "fusion"){ NDR = 1 @@ -162,6 +165,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, returnDistTable = TRUE } } + if(lowMemory){message("lowMemory has been deprecated and split into processByChromosome and processByBam. Please see Documentation")} if(is.null(annotations)) { annotations = GRangesList() } else annotations <- checkInputs(annotations, reads, readClass.outputDir = rcOutDir, genomeSequence = genome, discovery = discovery, @@ -193,7 +197,8 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, readClass.outputDir = rcOutDir, yieldSize = yieldSize, bpParameters = bpParameters, stranded = stranded, verbose = verbose, isoreParameters = isoreParameters, trackReads = trackReads, fusionMode = fusionMode, - lowMemory = lowMemory, demultiplexed = demultiplexed, + processByChromosome = processByChromosome, processByBam = processByBam, + demultiplexed = demultiplexed, sampleNames = sampleNames, cleanReads = cleanReads, dedupUMI = dedupUMI) } From fdd3fb03ebdc028b5345ee44f5ab22373362f393 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 16 Dec 2024 10:23:24 +0800 Subject: [PATCH 162/189] Add lowMemory replacements to documentation and importBambuResults --- README.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f03e31cf..fc7483dd 100755 --- a/README.md +++ b/README.md @@ -234,6 +234,11 @@ writeToGTF(se.discoveryOnly.novel, "./output.gtf") If both quant and discovery are set to FALSE, *bambu* will return an intermediate object see [Storing and using preprocessed files (rcFiles)](#Storing-and-using-preprocessed-files-rcFiles) +To reimport the output of writeBambuOutput() use importBambuResults() +```rscript +se <- importBambuResults(path = "/path/to/bambu/output/") +``` + ### Visualization You can visualize the novel genes/transcripts using plotBambu function. (Note that the visualization was done by running *bambu* on the three replicates of HepG2 cell line in the SG-NEx project) @@ -476,8 +481,9 @@ se <- bambu(reads = fusionAligned.bam, annotations = fusionAnnotations, genome = | discovery | A logical variable indicating whether annotations are to be extended for quantification, defaults to TRUE. | | quant | A logical variable indicating whether quantification will be performed, defaults to TRUE. | | verbose | A logical variable indicating whether processing messages will be printed. | -| lowMemory | A logical variable indicating if each input bam file will be processed seperately (TRUE) or all are read in and processed together (FALSE), defaults to TRUE | -| mode | A string that will set other input arguments ['bulk', 'multiplexed', 'fusion', 'debug']
    bulk -
        lowMemory = TRUE
    multiplexed -
        demultiplex = TRUE
        cleanReads = TRUE
        opt.em = list(degradationBias = FALSE)
        quant = FALSE
    fusion -
        NDR = 1
        fusionMode = TRUE
    debug -
        verbose = TRUE
        trackReads = TRUE
        returnDistTable = TRUE | +| processByBam | A logical variable indicating if each input bam file will be processed seperately (TRUE) or all are read in and processed together (FALSE), defaults to TRUE | +| processByChromosome | A logical variable indicating if read classes will be constructed with all reads together (FALSE), or done by chromsome which uses less memory, but provides less information for the junction correction model (TRUE), defaults to FALSE | +| mode | A string that will set other input arguments ['bulk', 'multiplexed', 'fusion', 'debug']
    bulk -
        processByBam = TRUE
        processByChromsome = FALSE
    multiplexed -
        demultiplex = TRUE
        cleanReads = TRUE
        opt.em = list(degradationBias = FALSE)
        quant = FALSE
        processByChromosome = TRUE
    fusion -
        NDR = 1
        fusionMode = TRUE
    debug -
        verbose = TRUE
        trackReads = TRUE
        returnDistTable = TRUE | | demultiplexed | A logical variable indicating whether the input bam file is demultiplexed. The barcode and umi either need to be present in the read name or the $BC and $UG tags, defaults to FALSE. Alternatively a path to a csv file can be provided where column 1 is read names, column 2 is barcodes, and column 3 is UMI. | | spatial | A path to the barcode whitelist containing X and Y coordinates, defaults to null. | | assignDist | A logical variable indicating whether read class to transcript assignment will be performed, defaults to TRUE. | @@ -571,9 +577,11 @@ Release date: 2024-October-28 - Added sampleNames argument - Added cleanReads argument - Added dedupUMI argument -- Added clsuters argument -- Updated lowMemory. The previous lowMemory mode is now always on. The new lowMemory mode is the current implementation, otherwise it will read in all bam files and process them together. -- Added importBambuResults +- Added clusters argument +- Deprecated lowMemory - This has been replaced by processByChromosome +- Added processByChomosome (the old memory) +- Added processByBam argument +- Added importBambuResults() - writeBambuOutput now outputs all information needed to import Bambu results from text files - Count outputs are all now in sparse matrix format From 24c5eb9d6accd264df8cc658b129d894929e934b Mon Sep 17 00:00:00 2001 From: Andre Date: Tue, 24 Dec 2024 11:07:30 +0800 Subject: [PATCH 163/189] Add more single cell documentation to readme --- README.md | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/README.md b/README.md index fc7483dd..db7ecae7 100755 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ - [Modulating the sensitivity of discovery (pre and post analysis)](#Modulating-the-sensitivity-of-discovery-pre-and-post-analysis) - [Output](#Output) - [Visualization](#Visualization) + - [Single-Cell and Spatial](#Single-Cell-and-Spatial) - [*bambu* Advanced Options](#Bambu-Advanced-Options) - [Using a pretrained model](#Using-a-pretrained-model) - [De-novo transcript discovery](#De-novo-transcript-discovery) @@ -35,6 +36,7 @@ - [Quantification of gene expression](#Quantification-of-gene-expression) - [Including single exons](#Including-single-exons) - [Fusion gene/isoform detection](#Fusion-geneisoform-detection) + - [Custom single-cell and spatial analysis](#Custom-Single-Cell-and-Spatial) - [*bambu* Arguments](#Bambu-Arguments) - [Output Description](#Output-Description) - [Release History](#Release-History) @@ -283,6 +285,12 @@ plotBambu(se, type = "heatmap", group.var) # heatmap plotBambu(se, type = "pca", group.var) # PCA visualization ``` +### Single-Cell-and-Spatial + +There is a single-cell and spatial pipeline starting from fastq or demultiplexed bamfiles that includes demultiplexing and aligning available here https://github.com/GoekeLab/bambu-singlecell-spatial. We recommend using this pipeline where possible. + +For advanced users see the #[Custom single-cell and spatial analysis](#Custom-Single-Cell-and-Spatial) section under advanced options + ### *Bambu* Advanced Options Below we include several advanced options and use-cases for *bambu*. We recommend reading and understanding the [paper](https://www.biorxiv.org/content/10.1101/2022.11.14.516358v1) before attempting to use these features. @@ -462,6 +470,98 @@ To use this feature, it is recommended to detect the fusion gene breakpoints usi se <- bambu(reads = fusionAligned.bam, annotations = fusionAnnotations, genome = fusionFasta, fusionMode = TRUE) ``` +### Custom single-cell and spatial + +If you want to run Bambu-Clump for single-cell or spatial analysis stand alone and not part of the Bambu-Pipe pipeline we recommend running it in 4 stages which we will describe seperately: Read Class Construction, Transcript Discovery, Read Class Assignment, and EM Quantification. Note that this section will only cover arguments that are different or unique to this analysis. + +Read Class Construction: + +reads: provided bam files must have barcodes in the read name or in the BC tag. Alternatively a csv file can be provided to demultiplexed mapping the read names to barcodes. For exact requirements see https://github.com/GoekeLab/bambu-singlecell-spatial.
    +demultiplexed: must be set to TRUE (or be a barcode map). This will cause bambu to look for barcodes and seperate reads by barcode rather than sample.
    + +Optional: + + +cleanReads: A logical TRUE/FALSE. Chimeric reads in samples can cause issues with barcode assignments. Setting this to TRUE will ensure only the first alignment per barcode is used (We recommend using this).
    +sampleNames: A vector of characters assigning names to each sample in the reads argument. By default the sample names are taken from the file names and appended to the barcodes in order to differentiate them. If your sample names are the same across multiple files, but matching barcodes between the samples should be counted seperately, provide them with different sample names using this argument. Similiarly if your samples have different names, but overlapping barcodes should be counted together, give them the same sample name with this argument.
    +dedupUMI: A logical TRUE/FALSE.
    + +```rscript +readClassFile = bambu(reads = samples, annotations = annotations, genome = "$genome", ncore = $params.ncore, discovery = FALSE, quant = FALSE, demultiplexed = barcode_maps, verbose = TRUE, assignDist = FALSE, lowMemory = as.logical("$params.lowMemory"), yieldSize = 10000000, sampleNames = ids, cleanReads = as.logical($cleanReads), = as.logical($deduplicateUMIs)) +``` + +Transcript Discovery: + +Transript discovery can be run as usual as typically bulk-level discovery is suitable. However cluster-level transcript discovery can be preformed using the clusters argument which can be redone done after clustering. + +```rscript +extendedAnno = bambu(reads = readClassFile, annotations = annotations, genome = "$genome", ncore = $params.ncore, discovery = TRUE, quant = FALSE, demultiplexed = TRUE, verbose = FALSE, assignDist = FALSE) +``` + +Read Class Assignment: +This step was previously performed together with the quantification, but can be done seperately so that the arguments can be passed to the quantification seperately with different clustering. If you only want barcode level gene counts or unique transcript counts you can stop here and do not need to proceed to the EM quantification. + +spatial: This should be a path to your barcode whitelist that also contians the x and y coordinates as extra columns. + +```rscript +quantData = bambu(reads = readClassFile, annotations = extendedAnno, genome = "$genome", ncore = $params.ncore, discovery = FALSE, quant = FALSE, demultiplexed = TRUE, verbose = FALSE, opt.em = list(degradationBias = FALSE), assignDist = TRUE, spatial = spatial) +``` + +EM quantification: + +If you plan to run this step with multiple processes we recommend restarting your R instance to ensure that environmental variables do not inflate the memory usage. + +reads: This argument is still mandatory but not needed when performing quantification alone as long as you provide the quantData argument
    +quantData: This is the summerized experiement output from the Read Class Assignment step
    +clusters: This is an optional argument which is either a path to a csv containing the barcode to cluster assignments or a list
    +opt.em = list(degradationBias=TRUE): We recommend including this argument if you are doing barcode level EM quantification to greatly improve runtime with only a small reduction in quantification accuracy. + +```rscript +#use Seurat to generate clusters from gene counts +library(Seurat) + +clusterCells = function(counts, resolution = 0.8, dim = 15){ + + cellMix <- CreateSeuratObject(counts = counts, + project = "cellMix", min.cells = 1)#, min.features = 200) + #cellMix <- subset(cellMix, subset = nFeature_RNA > nFeature_RNA_threshold & nFeature_RNA < nFeature_RNA_threshold_max) + #nFeature_RNA_threshold = 1000, nFeature_RNA_threshold_max = 9000, + cellMix <- NormalizeData(cellMix, normalization.method = "LogNormalize", scale.factor = 10000) + cellMix <- FindVariableFeatures(cellMix, selection.method = "vst", nfeatures = 2500) + all.genes <- rownames(cellMix) + cellMix <- ScaleData(cellMix, features = all.genes) + npcs = ifelse(ncol(counts)>50, 50, ncol(counts)-1) + cellMix <- RunPCA(cellMix, features = VariableFeatures(object = cellMix), npcs = npcs) + dim = ifelse(dim >= dim(cellMix@reductions$pca)[2], dim, dim(cellMix@reductions$pca)[2]) + cellMix <- FindNeighbors(cellMix, dims = 1:dim) + cellMix <- FindClusters(cellMix, resolution = resolution) + cellMix <- RunUMAP(cellMix, dims = 1:dim) + + return(cellMix) +} + +quantData.gene = transcriptToGeneExpression(quantData) +counts = assays(quantData.gene)$counts[,1] #selecting first sample +cellMix = clusterCells(counts, resolution = resolution) #resolution is dependant on sample. For larger clusters: 0.2-0.6, for higher resolution: 0.8-2 +x = setNames(names(cellMix@active.ident), cellMix@active.ident) +clusters = splitAsList(unname(x), names(x)) + + + +se = bambu( reads = "placeholder", + annotations = extendedAnno, + genome = "$genome", + quantData = quantDatas, + assignDist = FALSE, + ncore = $params.ncore, + discovery = FALSE, + quant = TRUE, + demultiplexed = TRUE, + verbose = FALSE, + opt.em = list(degradationBias = degBias), + clusters = clusters) +``` + ### *Bambu* Arguments |argument|description| From 44519355656664806fc02126a4e5d61636bcdcb9 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 2 Jan 2025 16:26:24 +0800 Subject: [PATCH 164/189] Fix bugs due to fusion mode on test data --- R/bambu-assignDist.R | 11 +++++++---- R/bambu.R | 1 + R/readWrite.R | 23 ++++++++++++++--------- R/transcriptToGeneExpression.R | 12 +++++++----- 4 files changed, 29 insertions(+), 18 deletions(-) diff --git a/R/bambu-assignDist.R b/R/bambu-assignDist.R index ef44b127..81416f02 100644 --- a/R/bambu-assignDist.R +++ b/R/bambu-assignDist.R @@ -14,7 +14,6 @@ assignReadClasstoTranscripts <- function(readClassList, annotations, isoreParame readClassDt = readClassDt %>% group_by(eqClassId, gene_sid) %>% mutate(multi_align = length(unique(txid))>1) %>% ungroup() %>% mutate(aval = 1) %>% data.table() - #return non-em counts ColData = generateColData(colnames(metadata(readClassList)$countMatrix), clusters = NULL, demultiplexed, spatial) quantData <- SummarizedExperiment(assays = SimpleList( @@ -76,9 +75,13 @@ generateNonUniqueCounts <- function(readClassDt, countMatrix, annotations){ x = readClassDt %>% filter(multi_align & !is.na(eqClass.match)) x = x %>% distinct(eqClassId, .keep_all = TRUE) nonuniqueCounts = countMatrix[x$eqClass.match,, drop = FALSE] - if(nrow(x)>1){ - nonuniqueCounts.gene = sparse.model.matrix(~ factor(x$gene_sid) - 1) - nonuniqueCounts = t(nonuniqueCounts.gene) %*% nonuniqueCounts + if(nrow(x)>1 & length(unique(x$gene_sid))>1){ + nonuniqueCounts.gene = sparse.model.matrix(~ factor(x$gene_sid) - 1) + nonuniqueCounts = t(nonuniqueCounts.gene) %*% nonuniqueCounts + } else{ + warning("The factor variable 'gene_sid' has only one level. Adjusting output.") + nonuniqueCounts.gene = Matrix(1, nrow = nrow(x), ncol = 1, sparse = TRUE) + nonuniqueCounts = t(nonuniqueCounts.gene) %*% nonuniqueCounts } #covert ids into gene ids geneids = as.numeric(levels(factor(x$gene_sid))) diff --git a/R/bambu.R b/R/bambu.R index 0471c14b..466ef206 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -268,6 +268,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, } } countsSeCompressed <- bplapply(iter, FUN = function(i){ + i = i[i %in% colnames(metadata(quantData_i)$countMatrix)] countMatrix = unname(metadata(quantData_i)$countMatrix[,i]) incompatibleCountMatrix = unname(metadata(quantData_i)$incompatibleCountMatrix[,i]) if(!is.null(dim(countMatrix))){ diff --git a/R/readWrite.R b/R/readWrite.R index 711221d6..cd0bdfcd 100644 --- a/R/readWrite.R +++ b/R/readWrite.R @@ -41,9 +41,11 @@ writeBambuOutput <- function(se, path, prefix = "", outputExtendedAnno = TRUE, print(d) } #write incompatible counts - estimates = metadata(se)$incompatibleCounts - estimatesfn <- paste(outdir, prefix, "incompatibleCounts.mtx", sep = "") - Matrix::writeMM(estimates, estimatesfn) + if(!is.null(metadata(se)$incompatibleCounts)){ + estimates = metadata(se)$incompatibleCounts + estimatesfn <- paste(outdir, prefix, "incompatibleCounts.mtx", sep = "") + Matrix::writeMM(estimates, estimatesfn) + } seGene <- transcriptToGeneExpression(se) writeCountsOutput(seGene, varname='counts', feature='gene',outdir, prefix) #utils::write.table(paste0(colnames(se), "-1"), file = paste0(outdir, "barcodes.tsv"), quote = FALSE, row.names = FALSE, col.names = FALSE) @@ -68,9 +70,11 @@ writeBambuOutput <- function(se, path, prefix = "", outputExtendedAnno = TRUE, writeCountsOutput(se, varname=d, feature='transcript',outdir=paste0(outdir, sampleName,"/"), prefix) } - estimates = metadata(se)$incompatibleCounts - estimatesfn <- paste(outdir, "/", sampleName,"/", prefix, "incompatibleCounts.mtx", sep = "") - Matrix::writeMM(estimates, estimatesfn) + if(!is.null(metadata(se)$incompatibleCounts)){ + estimates = metadata(se)$incompatibleCounts + estimatesfn <- paste(outdir, "/", sampleName,"/", prefix, "incompatibleCounts.mtx", sep = "") + Matrix::writeMM(estimates, estimatesfn) + } seGene <- transcriptToGeneExpression(se) writeCountsOutput(seGene, varname='counts', feature='gene',paste0(outdir, sampleName,"/"), prefix) utils::write.table(colData(se), file = paste0(outdir, "/", sampleName, "/", prefix, "sampleData.tsv"), @@ -86,7 +90,6 @@ writeBambuOutput <- function(se, path, prefix = "", outputExtendedAnno = TRUE, #' @noRd writeCountsOutput <- function(se, varname = "counts", feature = "transcript", outdir, prefix){ - if(!is(assays(se)[[varname]], "sparseMatrix")){ estimatesfn <- paste(outdir, prefix, varname,"_",feature,".txt", sep = "") estimates <- data.table(as.data.frame(assays(se)[[varname]]), @@ -98,7 +101,6 @@ writeCountsOutput <- function(se, varname = "counts", }else{ setnames(estimates, "rn","GENEID") } - utils::write.table(estimates, file = estimatesfn, sep = "\t", quote = FALSE, row.names = FALSE) } else{ @@ -326,7 +328,10 @@ importBambuResults <- function(path, prefixes = NA){ CPM = readMM(paste0(path, "/CPM_transcript.mtx")) fullLengthCounts = readMM(paste0(path, "/fullLengthCounts_transcript.mtx")) uniqueCounts = readMM(paste0(path, "/uniqueCounts_transcript.mtx")) - incompatibleCounts = readMM(paste0(path, "/incompatibleCounts.mtx")) + incompatibleCounts = NULL + if(file.exists(paste0(path, "/incompatibleCounts.mtx"))){ + incompatibleCounts = readMM(paste0(path, "/incompatibleCounts.mtx")) + } barcodes = read.table(paste0(path, "/barcodes.tsv")) geneIds = read.table(paste0(path, "/genes.tsv")) txIds = read.table(paste0(path, "/txANDgenes.tsv")) diff --git a/R/transcriptToGeneExpression.R b/R/transcriptToGeneExpression.R index 83507853..7ad12076 100644 --- a/R/transcriptToGeneExpression.R +++ b/R/transcriptToGeneExpression.R @@ -16,12 +16,14 @@ transcriptToGeneExpression <- function(se) { rowDataSe <- as.data.table(rowData(se)) counts = fac2sparse(rowData(se)$GENEID) %*% counts - incompatibleCounts <- metadata(se)$incompatibleCounts - if("nonuniqueCounts" %in% names(metadata(se))){ - incompatibleCounts = incompatibleCounts + metadata(se)$nonuniqueCounts + if(!is.null(metadata(se)$incompatibleCounts)){ + incompatibleCounts <- metadata(se)$incompatibleCounts + if("nonuniqueCounts" %in% names(metadata(se))){ + incompatibleCounts = incompatibleCounts + metadata(se)$nonuniqueCounts + } + incompatibleCounts = Matrix(incompatibleCounts[match(rownames(counts), rownames(incompatibleCounts)),], sparse = TRUE) + counts = counts + incompatibleCounts } - incompatibleCounts = incompatibleCounts[match(rownames(counts), rownames(incompatibleCounts)),] - counts = counts + incompatibleCounts counts.total = colSums(counts) counts.total[counts.total==0] = 1 counts.CPM = counts/counts.total * 10^6 From 5ca20efeade3a944e311fb904f411cc562626862 Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Thu, 9 Jan 2025 11:19:17 +0800 Subject: [PATCH 165/189] fix library load warnings related to unname and expand function --- NAMESPACE | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 4dcac7e6..3adb4e37 100755 --- a/NAMESPACE +++ b/NAMESPACE @@ -75,8 +75,8 @@ import(data.table, except=c(last, first, shift, second, between)) import(dplyr, except=c(last, first, desc, union, setdiff, intersect, slice)) import(IRanges, except=c(slice, collapse, setdiff, intersect,cor)) import(SummarizedExperiment) -import(S4Vectors, except=c(rename, setequal, setdiff, intersect,cor)) +import(Matrix) +import(S4Vectors, except=c(rename, setequal, setdiff, intersect,cor, unname, expand)) useDynLib(bambu, .registration = TRUE) import(xgboost) -import(Matrix) import(BSgenome) From 47704b6f88b1865432d67a47e1838b116c367f6e Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Thu, 9 Jan 2025 11:20:12 +0800 Subject: [PATCH 166/189] bug fix for 0 value quantification --- R/bambu.R | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 466ef206..951c7fba 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -228,6 +228,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, demultiplexed = demultiplexed, spatial = spatial, returnDistTable = returnDistTable, trackReads = trackReads, BPPARAM = bpParameters) + print(as.numeric(assays(quantData[[1]])$counts)) if (!quant) return(quantData) } @@ -247,7 +248,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, for(i in seq_along(quantData)){ quantData_i = quantData[[i]] #load in the barcode clustering from file if provided - iter = seq_len(ncol(metadata(quantData_i)$countMatrix)) + iter = seq_len(ncol(metadata(quantData_i)$countMatrix)) # iter is integer if(!is.null(clusters)){ if(!is.list(clusters)){ clusterMaps = NULL @@ -267,13 +268,14 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, }else(iter = do.call(c,clusters)) } } - countsSeCompressed <- bplapply(iter, FUN = function(i){ - i = i[i %in% colnames(metadata(quantData_i)$countMatrix)] - countMatrix = unname(metadata(quantData_i)$countMatrix[,i]) - incompatibleCountMatrix = unname(metadata(quantData_i)$incompatibleCountMatrix[,i]) + countsSeCompressed <- bplapply(iter, FUN = function(j){ # previous i changed to j to avoid duplicated assignment + #i = iter[i %in% colnames(metadata(quantData_i)$countMatrix)] #bug, after assignment, i become emptyprint(i) + + countMatrix = unname(metadata(quantData_i)$countMatrix[,j]) # same here + incompatibleCountMatrix = unname(metadata(quantData_i)$incompatibleCountMatrix[,j]) # same here if(!is.null(dim(countMatrix))){ countMatrix = rowSums(countMatrix) - incompatibleCountMatrix = rowSums(metadata(quantData_i)$incompatibleCountMatrix[,i]) + incompatibleCountMatrix = rowSums(metadata(quantData_i)$incompatibleCountMatrix[,j]) # same here } return(bambu.quantify(readClassDt = metadata(quantData_i)$readClassDt, countMatrix = countMatrix, incompatibleCountMatrix = data.table(GENEID.i = as.numeric(rownames(metadata(quantData_i)$incompatibleCountMatrix)), counts = incompatibleCountMatrix), From 314ec29c960fcb5e8df83282b024fc197a0a3ee1 Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Thu, 9 Jan 2025 11:34:28 +0800 Subject: [PATCH 167/189] remove print line --- R/bambu.R | 2 -- 1 file changed, 2 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 951c7fba..7f266913 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -228,7 +228,6 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, demultiplexed = demultiplexed, spatial = spatial, returnDistTable = returnDistTable, trackReads = trackReads, BPPARAM = bpParameters) - print(as.numeric(assays(quantData[[1]])$counts)) if (!quant) return(quantData) } @@ -270,7 +269,6 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, } countsSeCompressed <- bplapply(iter, FUN = function(j){ # previous i changed to j to avoid duplicated assignment #i = iter[i %in% colnames(metadata(quantData_i)$countMatrix)] #bug, after assignment, i become emptyprint(i) - countMatrix = unname(metadata(quantData_i)$countMatrix[,j]) # same here incompatibleCountMatrix = unname(metadata(quantData_i)$incompatibleCountMatrix[,j]) # same here if(!is.null(dim(countMatrix))){ From 051480c0c73f198f3ac967f3a65f7ffb295f0cb9 Mon Sep 17 00:00:00 2001 From: SuiYue-2308 Date: Tue, 14 Jan 2025 10:19:03 +0000 Subject: [PATCH 168/189] min.txScore.singleExon bug fix --- R/bambu-extendAnnotations-utilityCombine.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/bambu-extendAnnotations-utilityCombine.R b/R/bambu-extendAnnotations-utilityCombine.R index dc58b69e..48d11844 100644 --- a/R/bambu-extendAnnotations-utilityCombine.R +++ b/R/bambu-extendAnnotations-utilityCombine.R @@ -19,7 +19,7 @@ isore.combineTranscriptCandidates <- function(readClassList, min.readCount, min.readFractionByGene, min.txScore.multiExon, min.txScore.singleExon, verbose) %>% data.table() combinedSplicedTranscripts[,confidenceType := "highConfidenceJunctionReads"] - if (min.txScore.singleExon < 1) {return(combinedSplicedTranscripts)} + if (min.txScore.singleExon == 1) {return(combinedSplicedTranscripts)} combinedUnsplicedTranscripts <- combineUnsplicedTranscriptModels(readClassList, bpParameters, stranded, min.readCount, min.readFractionByGene, From 8bd703ca7ccdd85e157dc53d60ee735fa27a6de1 Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Mon, 20 Jan 2025 10:42:58 +0800 Subject: [PATCH 169/189] fix barcodesToFilter not working bug --- R/bambu-processReads.R | 9 ++++----- R/bambu.R | 3 ++- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index 0bd8bc54..e7a65a6c 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -54,7 +54,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, returnModel = isoreParameters[["returnModel"]] min.exonOverlap = isoreParameters[["min.exonOverlap"]] - if(processByBam){ + if(processByBam){ # bulk mode readClassList <- bplapply(seq_along(reads), function(i) { bambu.processReadsByFile(bam.file = reads[i], genomeSequence = genomeSequence,annotations = annotations, @@ -64,7 +64,7 @@ bambu.processReads <- function(reads, annotations, genomeSequence, processByChromosome = processByChromosome, trackReads = trackReads, fusionMode = fusionMode, demultiplexed = demultiplexed, cleanReads = cleanReads, dedupUMI = dedupUMI, index = 1, barcodesToFilter = barcodesToFilter)}, BPPARAM = bpParameters) - } else { + } else { # single cell mode readGrgList <- bplapply(seq_along(reads), function(i) { bambu.readsByFile(bam.file = reads[i], genomeSequence = genomeSequence,annotations = annotations, @@ -74,7 +74,6 @@ bambu.processReads <- function(reads, annotations, genomeSequence, trackReads = trackReads, fusionMode = fusionMode, demultiplexed = demultiplexed, cleanReads = cleanReads, dedupUMI = dedupUMI, index = i, barcodesToFilter = barcodesToFilter)}, BPPARAM = bpParameters) - sampleNames = as.numeric(as.factor(sampleNames)) for(i in seq_along(readGrgList)){ if(!isFALSE(demultiplexed)){ @@ -92,7 +91,6 @@ bambu.processReads <- function(reads, annotations, genomeSequence, fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, processByChromosome = processByChromosome, trackReads = trackReads, fusionMode = fusionMode) - metadata(readClassList)$samples = names(reads) metadata(readClassList)$sampleNames = names(reads) if(!isFALSE(demultiplexed))metadata(readClassList)$samples = levels(mcols(readGrgList)$BC) @@ -130,7 +128,8 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, readGrgList <- prepareDataFromBam(bam.file[[1]], verbose = verbose, yieldSize = yieldSize, use.names = trackReads, demultiplexed = demultiplexed, cleanReads = cleanReads, dedupUMI = dedupUMI) if(verbose) message(paste0("Number of alignments/reads: ",length(readGrgList))) warnings = c() - if(!is.null(barcodesToFilter) & demultiplexed){ readGrgList = readGrgList[!mcols(readGrgList)$CB %in% barcodesToFilter]} + if(!is.null(barcodesToFilter) & demultiplexed) + readGrgList = readGrgList[!(mcols(readGrgList)$BC %in% barcodesToFilter)] warnings = seqlevelCheckReadsAnnotation(readGrgList, annotations) if(verbose & length(warnings) > 0) warning(paste(warnings,collapse = "\n")) #check seqlevels for consistency, drop ranges not present in genomeSequence diff --git a/R/bambu.R b/R/bambu.R index 7f266913..b54eaa74 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -199,7 +199,8 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, isoreParameters = isoreParameters, trackReads = trackReads, fusionMode = fusionMode, processByChromosome = processByChromosome, processByBam = processByBam, demultiplexed = demultiplexed, - sampleNames = sampleNames, cleanReads = cleanReads, dedupUMI = dedupUMI) + sampleNames = sampleNames, cleanReads = cleanReads, dedupUMI = dedupUMI, + barcodesToFilter = barcodesToFilter) } #warnings = handleWarnings(readClassList, verbose) From b907925d5015f29fbd32f48e1550a9f654f6be6e Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Mon, 20 Jan 2025 11:02:34 +0800 Subject: [PATCH 170/189] fix typo in main function --- R/bambu.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/bambu.R b/R/bambu.R index b54eaa74..18047be9 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -149,7 +149,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, processByBam = TRUE } if(mode == "multiplexed"){ - if(is.null(demultiplex)) demultiplex = TRUE + if(is.null(demultiplexed)) demultiplexed = TRUE cleanReads = TRUE opt.em = list(degradationBias = FALSE) quant = FALSE From 3a9e06a1a3d715916d8a87593b5d2f5b8d4fdeb6 Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Mon, 20 Jan 2025 11:38:21 +0800 Subject: [PATCH 171/189] add documentation for barcodesToFilter argument and update the formats for some paragraphs --- README.md | 90 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 52 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index db7ecae7..956700f7 100755 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ - [Output](#Output) - [Visualization](#Visualization) - [Single-Cell and Spatial](#Single-Cell-and-Spatial) -- [*bambu* Advanced Options](#Bambu-Advanced-Options) + - [*bambu* Advanced Options](#Bambu-Advanced-Options) - [Using a pretrained model](#Using-a-pretrained-model) - [De-novo transcript discovery](#De-novo-transcript-discovery) - [Storing and using preprocessed files (rcFiles)](#Storing-and-using-preprocessed-files-rcFiles) @@ -287,7 +287,7 @@ plotBambu(se, type = "pca", group.var) # PCA visualization ### Single-Cell-and-Spatial -There is a single-cell and spatial pipeline starting from fastq or demultiplexed bamfiles that includes demultiplexing and aligning available here https://github.com/GoekeLab/bambu-singlecell-spatial. We recommend using this pipeline where possible. +There is a single-cell and spatial pipeline starting from fastq or demultiplexed bam files that include demultiplexing and aligning available here https://github.com/GoekeLab/bambu-singlecell-spatial. We recommend using this pipeline where possible. For advanced users see the #[Custom single-cell and spatial analysis](#Custom-Single-Cell-and-Spatial) section under advanced options @@ -303,13 +303,13 @@ se <- bambu(reads = test.bam, annotations = annotations, genome = fa.file, opt.d ``` The default pretrained model was trained on SGNex_HepG2_directRNA_replicate5_run1 and has the following characteristics: -Genome: Homo_sapiens.GRCh38.dna_sm.primary_assembly
    -Annotations: Homo_sapiens.GRCh38.91
    -Read count: 7,861,846
    -Technology: Nanopore (ONT)
    -Library preparation: directRNA
    -Base Calling Accuracy: 79%
    -Average Read Length: 1093
    +**Genome**: Homo_sapiens.GRCh38.dna_sm.primary_assembly
    +**Annotations**: Homo_sapiens.GRCh38.91
    +**Read count**: 7,861,846
    +**Technology**: Nanopore (ONT)
    +**Library preparation**: directRNA
    +**Base Calling Accuracy**: 79%
    +**Average Read Length**: 1093
    We have found the pretrained model works successfully across species borders (on Arabidopsis thaliana) and on different technologies (PacBio), with only small decreases in performance compared to using a sample specific model. The pretrained model is not always effective in samples with large differences in sequencing quality or if the library preparation results in biases in the overall structure of the transcriptome. In this case, we would recommend training a new model using similar data from a different sample that has quality reference annotations (See [Training a model on another species/dataset and applying it](#Training-a-model-on-another-speciesdataset-and-applying-it)). @@ -368,7 +368,7 @@ rowData(se[[1]]) |readCount.posStrand|The number of reads assigned to this read class that aligned to the positive strand| |intronStarts|A comma separated character vector of intron start coordinates| |intronEnds|A comma separated character vector of intron end coordinates| -|confidenceType|Category of confidence:
    **highConfidenceJunctionReads** - the read class contain no low confidence junctions
    **lowConfidenceJunctionReads** - the read class contains low confidence junctions
    **unsplicedWithin** - single exon read class that is within the exon boundaries of an annotation
    **unsplicedNew** - single exon read class that does not fully overlap with annotated exons| +|confidenceType|Category of confidence:
    **highConfidenceJunctionReads** - the read class contain no low confidence junctions
    **lowConfidenceJunctionReads** - the read class contains low confidence junctions
    **unsplicedWithin** - single exon read class that is within the exon boundaries of an annotation
    **unsplicedNew** - single exon read class that does not fully overlap with annotated exons| |readCount|The number of reads assigned to this read class| |readId *only present when trackReads = TRUE|An integer list of bambu internal read ids that belong to the read class. (See the metadata of the object for full read names)| |GENEID|The gene ID the transcript is associated with| @@ -474,23 +474,27 @@ se <- bambu(reads = fusionAligned.bam, annotations = fusionAnnotations, genome = If you want to run Bambu-Clump for single-cell or spatial analysis stand alone and not part of the Bambu-Pipe pipeline we recommend running it in 4 stages which we will describe seperately: Read Class Construction, Transcript Discovery, Read Class Assignment, and EM Quantification. Note that this section will only cover arguments that are different or unique to this analysis. -Read Class Construction: +#### Read Class Construction: -reads: provided bam files must have barcodes in the read name or in the BC tag. Alternatively a csv file can be provided to demultiplexed mapping the read names to barcodes. For exact requirements see https://github.com/GoekeLab/bambu-singlecell-spatial.
    -demultiplexed: must be set to TRUE (or be a barcode map). This will cause bambu to look for barcodes and seperate reads by barcode rather than sample.
    +**reads**: provided bam files must have barcodes in the read name or in the BC tag. Alternatively a csv file can be provided to demultiplexed mapping the read names to barcodes. For exact requirements see https://github.com/GoekeLab/bambu-singlecell-spatial.
    + +**demultiplexed**: must be set to TRUE (or be a barcode map). This will cause bambu to look for barcodes and seperate reads by barcode rather than sample.
    Optional: +**cleanReads**: A logical TRUE/FALSE. Chimeric reads in samples can cause issues with barcode assignments. Setting this to TRUE will ensure only the first alignment per barcode is used (We recommend using this).
    + +**sampleNames**: A vector of characters assigning names to each sample in the reads argument. By default the sample names are taken from the file names and appended to the barcodes in order to differentiate them. If your sample names are the same across multiple files, but matching barcodes between the samples should be counted seperately, provide them with different sample names using this argument. Similiarly if your samples have different names, but overlapping barcodes should be counted together, give them the same sample name with this argument.
    -cleanReads: A logical TRUE/FALSE. Chimeric reads in samples can cause issues with barcode assignments. Setting this to TRUE will ensure only the first alignment per barcode is used (We recommend using this).
    -sampleNames: A vector of characters assigning names to each sample in the reads argument. By default the sample names are taken from the file names and appended to the barcodes in order to differentiate them. If your sample names are the same across multiple files, but matching barcodes between the samples should be counted seperately, provide them with different sample names using this argument. Similiarly if your samples have different names, but overlapping barcodes should be counted together, give them the same sample name with this argument.
    -dedupUMI: A logical TRUE/FALSE.
    +**dedupUMI**: A logical TRUE/FALSE.
    + +**barcodesToFilter**: A string vector indicating barcodes to be filtered out.
    ```rscript -readClassFile = bambu(reads = samples, annotations = annotations, genome = "$genome", ncore = $params.ncore, discovery = FALSE, quant = FALSE, demultiplexed = barcode_maps, verbose = TRUE, assignDist = FALSE, lowMemory = as.logical("$params.lowMemory"), yieldSize = 10000000, sampleNames = ids, cleanReads = as.logical($cleanReads), = as.logical($deduplicateUMIs)) +readClassFile = bambu(reads = samples, annotations = annotations, genome = "$genome", ncore = $params.ncore, discovery = FALSE, quant = FALSE, demultiplexed = barcode_maps, verbose = TRUE, assignDist = FALSE, lowMemory = as.logical("$params.lowMemory"), yieldSize = 10000000, sampleNames = ids, cleanReads = as.logical($cleanReads), dedupUMI = as.logical($deduplicateUMIs)) ``` -Transcript Discovery: +#### Transcript Discovery: Transript discovery can be run as usual as typically bulk-level discovery is suitable. However cluster-level transcript discovery can be preformed using the clusters argument which can be redone done after clustering. @@ -498,23 +502,27 @@ Transript discovery can be run as usual as typically bulk-level discovery is sui extendedAnno = bambu(reads = readClassFile, annotations = annotations, genome = "$genome", ncore = $params.ncore, discovery = TRUE, quant = FALSE, demultiplexed = TRUE, verbose = FALSE, assignDist = FALSE) ``` -Read Class Assignment: +#### Read Class Assignment: + This step was previously performed together with the quantification, but can be done seperately so that the arguments can be passed to the quantification seperately with different clustering. If you only want barcode level gene counts or unique transcript counts you can stop here and do not need to proceed to the EM quantification. -spatial: This should be a path to your barcode whitelist that also contians the x and y coordinates as extra columns. +**spatial**: This should be a path to your barcode whitelist that also contians the x and y coordinates as extra columns. ```rscript quantData = bambu(reads = readClassFile, annotations = extendedAnno, genome = "$genome", ncore = $params.ncore, discovery = FALSE, quant = FALSE, demultiplexed = TRUE, verbose = FALSE, opt.em = list(degradationBias = FALSE), assignDist = TRUE, spatial = spatial) ``` -EM quantification: +#### EM quantification: If you plan to run this step with multiple processes we recommend restarting your R instance to ensure that environmental variables do not inflate the memory usage. -reads: This argument is still mandatory but not needed when performing quantification alone as long as you provide the quantData argument
    -quantData: This is the summerized experiement output from the Read Class Assignment step
    -clusters: This is an optional argument which is either a path to a csv containing the barcode to cluster assignments or a list
    -opt.em = list(degradationBias=TRUE): We recommend including this argument if you are doing barcode level EM quantification to greatly improve runtime with only a small reduction in quantification accuracy. +**reads**: This argument is still mandatory but not needed when performing quantification alone as long as you provide the quantData argument
    + +**quantData**: This is the summerized experiement output from the Read Class Assignment step
    + +**clusters**: This is an optional argument which is either a path to a csv containing the barcode to cluster assignments or a list
    + +**opt.em = list(degradationBias=FALSE)**: We recommend including this argument if you are doing barcode level EM quantification to greatly improve runtime with only a small reduction in quantification accuracy. ```rscript #use Seurat to generate clusters from gene counts @@ -558,7 +566,7 @@ se = bambu( reads = "placeholder", quant = TRUE, demultiplexed = TRUE, verbose = FALSE, - opt.em = list(degradationBias = degBias), + opt.em = list(degradationBias = FALSE), clusters = clusters) ``` @@ -574,16 +582,14 @@ se = bambu( reads = "placeholder", | ncore | specifying number of cores used when parallel processing is used, defaults to 1. | | NDR | specifying the maximum NDR rate to novel transcript output among detected transcripts, defaults to 0.1 | | yieldSize | see Rsamtools. | -| opt.discovery | A list of controlling parameters for isoform reconstruction process:
    **prefix** specifying prefix for new gene Ids (genePrefix.number), defaults to empty
    **remove.subsetTx** indicating whether filter to remove read classes which are a subset of known transcripts, defaults to TRUE
    **min.readCount** specifying minimun read count to consider a read class valid in a sample, defaults to 2
    **min.readFractionByGene** specifying minimum relative read count per gene, highly expressed genes will have many high read count low relative abundance transcripts that can be filtered, defaults to 0.05
    **min.sampleNumber** specifying minimum sample number with minimum read count, gene read proportion, and TPS, defaults to 1
    **min.exonDistance** specifying minimum distance to known transcript to be considered valid as new, defaults to 35bp
    **min.exonOverlap** specifying minimum number of bases shared with annotation to be assigned to the same gene id, defaults to 10bp
    **min.primarySecondaryDist** specifying the minimum number of distance threshold between a read class and the annotations internal exons. Read classes with distances less than the threshold are not annotated as novel and counted with the annotations for quantification, defaults to 5bp
    **min.primarySecondaryDistStartEnd1** specifying the minimum number of distance threshold between a read class and the annotations start/end exons. Read classes with distances less than the threshold are not annotated as novel, defaults to 5bp
    **min.primarySecondaryDistStartEnd2** specifying the minimum number of distance threshold between a read class and the annotations start/end exons. Read classes with distances less than the threshold are counted with the annotations, defaults to 5bp
    **min.txScore.multiExon** specifying the minimum transcript probility score threshold for multi-exon transcripts for min.sampleNumber, defaults to 0
    **min.txScore.singleExon** specifying the minimum transcript probability score threshold for single-exon transcripts for min.sampleNumber
    **fitReadClassModel** a boolean specifying if bambu should train a model on each sample. If set to false bambu will use the default model for ranking novel transcripts. defaults to TRUE
    **defaultModels** a bambu trained model object that bambu will use when fitReadClassModel==FALSE or the data is not suitable for training, defaults to the pretrained model in the *bambu* package
    **returnModel** a boolean specifying if bambu will output the model it trained on the data, defaults to FALSE
    **baselineFDR** a value between 0-1. Bambu uses this FDR on the trained model to recommend an equivilent NDR threshold to be used for the sample. By default, a baseline FDR of 0.1 is used. This does not impact the analysis if an NDR is set.
    **min.readFractionByEqClass** indicating the minimum relative read count of a subset transcript compared to all superset transcripts (ie the relative read count within the minimum equivalent class). This filter is applied on the set of annotations across all samples using the total read count, this is not a per-sample filter. Please use with caution. defaults to 0 | -| opt.em | A list of controlling parameters for quantification algorithm estimation process:
    **maxiter** specifying maximum number of run iterations, defaults to 10000
    **degradationBias** correcting for degradation bias, defaults to TRUE
    **conv** specifying the covergence threshold control, defaults to 0.0001
    **minvalue** specifying the minvalue for convergence consideration, defaults to 0.00000001 | +| opt.discovery | A list of controlling parameters for isoform reconstruction process:
    **prefix** specifying prefix for new gene Ids (genePrefix.number), defaults to empty
    **remove.subsetTx** indicating whether filter to remove read classes which are a subset of known transcripts, defaults to TRUE
    **min.readCount** specifying minimun read count to consider a read class valid in a sample, defaults to 2
    **min.readFractionByGene** specifying minimum relative read count per gene, highly expressed genes will have many high read count low relative abundance transcripts that can be filtered, defaults to 0.05
    **min.sampleNumber** specifying minimum sample number with minimum read count, gene read proportion, and TPS, defaults to 1
    **min.exonDistance** specifying minimum distance to known transcript to be considered valid as new, defaults to 35bp
    **min.exonOverlap** specifying minimum number of bases shared with annotation to be assigned to the same gene id, defaults to 10bp
    **min.primarySecondaryDist** specifying the minimum number of distance threshold between a read class and the annotations internal exons. Read classes with distances less than the threshold are not annotated as novel and counted with the annotations for quantification, defaults to 5bp
    **min.primarySecondaryDistStartEnd1** specifying the minimum number of distance threshold between a read class and the annotations start/end exons. Read classes with distances less than the threshold are not annotated as novel, defaults to 5bp
    **min.primarySecondaryDistStartEnd2** specifying the minimum number of distance threshold between a read class and the annotations start/end exons. Read classes with distances less than the threshold are counted with the annotations, defaults to 5bp
    **min.txScore.multiExon** specifying the minimum transcript probility score threshold for multi-exon transcripts for min.sampleNumber, defaults to 0
    **min.txScore.singleExon** specifying the minimum transcript probability score threshold for single-exon transcripts for min.sampleNumber
    **fitReadClassModel** a boolean specifying if bambu should train a model on each sample. If set to false bambu will use the default model for ranking novel transcripts. defaults to TRUE
    **defaultModels** a bambu trained model object that bambu will use when fitReadClassModel==FALSE or the data is not suitable for training, defaults to the pretrained model in the *bambu* package
    **returnModel** a boolean specifying if bambu will output the model it trained on the data, defaults to FALSE
    **baselineFDR** a value between 0-1. Bambu uses this FDR on the trained model to recommend an equivilent NDR threshold to be used for the sample. By default, a baseline FDR of 0.1 is used. This does not impact the analysis if an NDR is set.
    **min.readFractionByEqClass** indicating the minimum relative read count of a subset transcript compared to all superset transcripts (ie the relative read count within the minimum equivalent class). This filter is applied on the set of annotations across all samples using the total read count, this is not a per-sample filter. Please use with caution. defaults to 0 | +| opt.em | A list of controlling parameters for quantification algorithm estimation process:
    **maxiter** specifying maximum number of run iterations, defaults to 10000
    **degradationBias** correcting for degradation bias, defaults to TRUE
    **conv** specifying the covergence threshold control, defaults to 0.0001
    **minvalue** specifying the minvalue for convergence consideration, defaults to 0.00000001 | | trackReads | When TRUE read names will be tracked and output as metadata in the final output as readToTranscriptMaps detailing the assignment of reads to transcripts.The output is a list with an entry for each sample. | | returnDistTable | When TRUE the calculated distance table between read classes and annotations will be output as metadata as distTables. The output is a list with an entry for each sample. | | discovery | A logical variable indicating whether annotations are to be extended for quantification, defaults to TRUE. | | quant | A logical variable indicating whether quantification will be performed, defaults to TRUE. | | verbose | A logical variable indicating whether processing messages will be printed. | -| processByBam | A logical variable indicating if each input bam file will be processed seperately (TRUE) or all are read in and processed together (FALSE), defaults to TRUE | -| processByChromosome | A logical variable indicating if read classes will be constructed with all reads together (FALSE), or done by chromsome which uses less memory, but provides less information for the junction correction model (TRUE), defaults to FALSE | -| mode | A string that will set other input arguments ['bulk', 'multiplexed', 'fusion', 'debug']
    bulk -
        processByBam = TRUE
        processByChromsome = FALSE
    multiplexed -
        demultiplex = TRUE
        cleanReads = TRUE
        opt.em = list(degradationBias = FALSE)
        quant = FALSE
        processByChromosome = TRUE
    fusion -
        NDR = 1
        fusionMode = TRUE
    debug -
        verbose = TRUE
        trackReads = TRUE
        returnDistTable = TRUE | +| mode | A string that will set other input arguments ['bulk', 'multiplexed', 'fusion', 'debug']
    bulk -
        processByBam = TRUE
        processByChromsome = FALSE
    multiplexed -
        demultiplex = TRUE
        cleanReads = TRUE
        opt.em = list(degradationBias = FALSE)
        quant = FALSE
        processByChromosome = TRUE
    fusion -
        NDR = 1
        fusionMode = TRUE
    debug -
        verbose = TRUE
        trackReads = TRUE
        returnDistTable = TRUE | | demultiplexed | A logical variable indicating whether the input bam file is demultiplexed. The barcode and umi either need to be present in the read name or the $BC and $UG tags, defaults to FALSE. Alternatively a path to a csv file can be provided where column 1 is read names, column 2 is barcodes, and column 3 is UMI. | | spatial | A path to the barcode whitelist containing X and Y coordinates, defaults to null. | | assignDist | A logical variable indicating whether read class to transcript assignment will be performed, defaults to TRUE. | @@ -591,9 +597,13 @@ se = bambu( reads = "placeholder", | sampleNames | A vector of strings representing the sample name associated with each input bam. bam files with the same sample name will be combined | | cleanReads | A logical variable indicating whether only the first sequenced alignment in a read should be kept. This helps to remove chimeric reads, but will remove alignments from fusion genes, defaults to FALSE. | | dedupUMI | A logical variable indicating whether UMI deduplication is performed. The longest read per UMI will be used and the rest discarded, defaults to FALSE.| +| barcodesToFilter | A vector of strings indicating the barcodes to be filtered out in reads.| | clusters | Either a list containing the barcodes for each cluster, or a path to a csv file containg the barcode to cluster mapping. When provided, clusters will be used during discovery and EM quant steps, defaults to null. | +| processByBam | A logical variable indicating if each input bam file will be processed seperately (TRUE) or all are read in and processed together (FALSE), defaults to TRUE | +| processByChromosome | A logical variable indicating if read classes will be constructed with all reads together (FALSE), or done by chromsome which uses less memory, but provides less information for the junction correction model (TRUE), defaults to FALSE | ### setNDR() arguments + |argument|description| |---|---| |extendedAnnotations| A GRangesList object produced from bambu(quant = FALSE) or rowRanges(se) or loaded in from prepareAnnotations() of a Bambu dervived .gtf | @@ -604,6 +614,7 @@ se = bambu( reads = "placeholder", |defaultModels| a bambu trained model object used to recommend an NDR threshold if no NDR is provided. Defaults to the pretrained model in the bambu package| ### Output Description + Access annotations that are matched to the transcript expression estimates by rowRanges() ```rscript rowRanges(se) @@ -633,7 +644,7 @@ rowData(se) |eqClass|A character vector with the transcript names of all the equivalent transcripts (those which have this transcripts contiguous exon junctions)| |txId|A bambu specific transcript id used for indexing purposes |eqClassById|A integer list with the transcript ids of all equivalent transcripts -|txClassDescription|A concatenated string containing the classes the transcript falls under:
    **annotation** - Transcript matches an annotation transcript
    **allNew** - All the intron-junctions are novel
    **newFirstJunction** - the first junction is novel and at least one other junction matches an annotated transcript
    **newLastJunction** - the last junction is novel and at least one other junction matches an annotated transcript
    **newJunction** - an internal junction is novel and at least one other internal junction matches an annotated transcript
    **newWithin** - A novel transcript with matching junctions but is not a subset of an annotation
    **unsplicedNew** - A single exon transcript that doesn’t completely overlap with annotations
    **compatible** - Is a subset of an annotated transcript
    **newFirstExon** - The first exon is novel
    **newLastExon** - The last exon is novel| +|txClassDescription|A concatenated string containing the classes the transcript falls under:
    **annotation** - Transcript matches an annotation transcript
    **allNew** - All the intron-junctions are novel
    **newFirstJunction** - the first junction is novel and at least one other junction matches an annotated transcript
    **newLastJunction** - the last junction is novel and at least one other junction matches an annotated transcript
    **newJunction** - an internal junction is novel and at least one other internal junction matches an annotated transcript
    **newWithin** - A novel transcript with matching junctions but is not a subset of an annotation
    **unsplicedNew** - A single exon transcript that doesn’t completely overlap with annotations
    **compatible** - Is a subset of an annotated transcript
    **newFirstExon** - The first exon is novel
    **newLastExon** - The last exon is novel| |readCount|The number of full length reads associated with this transcript (filtered by min.readCount)| |NDR|The NDR score calculated for the transcript| |relReadCount|The proportion of reads this transcript has relative to all reads assigned to its gene| @@ -645,8 +656,8 @@ rowData(se) metadata(se)$incompatibleCounts metadata(se)$warnings ``` -IncompatibleCounts - A table containing counts for incompatible reads that can be assigned to a gene but to none of the provided transcripts. -warnings - A list containing the warnings produced by each sample +**IncompatibleCounts** - A table containing counts for incompatible reads that can be assigned to a gene but to none of the provided transcripts.
    +**warnings** - A list containing the warnings produced by each sample
    ```rscript metadata(rowRanges(se))$NDRthreshold @@ -654,10 +665,13 @@ metadata(rowRanges(se))$subsetTranscripts metadata(rowRanges(se))$lowConfidenceTranscripts metadata(rowRanges(se))$warnings ``` -NDRthreshold - The NDR threshold currently appled to the novel transcripts. A number between 0 and 1 -subsetTranscripts - A GrangesList containing subset transcripts when remove.subsetTx = TRUE. readCount and txScore can be accessed from mcols. -lowConfidenceTranscripts - A GrangesList containing novel transcripts above the NDR threshold -warnings - A list containing the warnings produced by each sample +**NDRthreshold** - The NDR threshold currently appled to the novel transcripts. A number between 0 and 1
    + +**subsetTranscripts** - A GrangesList containing subset transcripts when remove.subsetTx = TRUE. readCount and txScore can be accessed from mcols.
    + +**lowConfidenceTranscripts** - A GrangesList containing novel transcripts above the NDR threshold
    + +**warnings** - A list containing the warnings produced by each sample
    ### Release History From 790dd175b6436a1bfa53b28802f9285f959b6434 Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Tue, 21 Jan 2025 15:27:17 +0800 Subject: [PATCH 172/189] add check flag when read name does not contain BC and UMI information --- R/prepareDataFromBam.R | 95 ++++++++++++++++++++++++++---------------- 1 file changed, 58 insertions(+), 37 deletions(-) diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index ee8f7e78..98bfb778 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -28,29 +28,39 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, counter <- 1 cells <- c() umi <- c() - use.names.OG = use.names - if(!isFALSE(demultiplexed) | cleanReads) use.names = TRUE - if(grepl(".[ct]sv$",demultiplexed)){ - readMap = read.table(demultiplexed, - sep = ifelse(grepl(".tsv$",demultiplexed), "\t", ","), header = FALSE) + use.names.OG <- use.names + if(!isFALSE(demultiplexed) | cleanReads) use.names <- TRUE + # grepl(".[ct]sv$",demultiplexed) + if(!is.logical(demultiplexed)){ # if demultiplexed argument is not logical value + if(file.exists(demultiplexed)){ # check if file path exists, it has to be a regular delimited file, can be compressed + readMap <- fread(demultiplexed,header = FALSE, data.table = FALSE) # changed function to more efficiently read in data and also correct error of "no lines available as input" for csv format input + }else{ + stop("Provided barcode to map file does not exists! Please provide the correct path to demultiplex argument!") + } } while (isIncomplete(bf)) { alignmentInfo <- readGAlignments(bf, param = ScanBamParam(tag = c("BC", "UG"), flag = scanBamFlag(isSecondaryAlignment = FALSE)), use.names = use.names) readGrgList[[counter]] <-grglist(alignmentInfo) - if (!isFALSE(demultiplexed)){ - if(isTRUE(demultiplexed)){ - mcols(readGrgList[[counter]])$BC <- ifelse(!is.na(mcols(alignmentInfo)$BC), mcols(alignmentInfo)$BC, - gsub("(^[GACT]+(?=_)).*", '\\1', names(readGrgList[[counter]]), perl = TRUE)) + if (!isFALSE(demultiplexed)){ # if demultiplexed is TRUE or a string path + if(isTRUE(demultiplexed)){ # if demultiplexed is TRUE + mcols(readGrgList[[counter]])$BC <- ifelse(!is.na(mcols(alignmentInfo)$BC), + mcols(alignmentInfo)$BC, + ifelse(grepl("[GACT]_",names(readGrgList[[counter]])), # a checkpoint to see whether BC is contained in the name, with specific format BC_UMI#READNAME + gsub("(^[GACT]+(?=_)).*", '\\1', + names(readGrgList[[counter]]), perl = TRUE), + NA)) mcols(readGrgList[[counter]])$UMI <- ifelse(!is.na(mcols(alignmentInfo)$UG), mcols(alignmentInfo)$UG, - gsub(".*((?<=_)[GACT]*(?=#)).*", '\\1', names(readGrgList[[counter]]), perl = TRUE)) - } else{ - mcols(readGrgList[[counter]])$BC = NA - mcols(readGrgList[[counter]])$UMI = "NA" - mcols(readGrgList[[counter]])$BC = readMap[,2][match(names(readGrgList[[counter]]),readMap[,1])] + ifelse(grepl("[GACT]#",names(readGrgList[[counter]])), # a checkpoint to see whether UMI is contained in the name, with specific format BC_UMI#READNAME + gsub(".*((?<=_)[GACT]*(?=#)).*", '\\1', names(readGrgList[[counter]]), perl = TRUE), + NA)) + } else{ # if demultiplexed is a string path + mcols(readGrgList[[counter]])$BC <- NA + mcols(readGrgList[[counter]])$UMI <- "NA" + mcols(readGrgList[[counter]])$BC <- readMap[,2][match(names(readGrgList[[counter]]),readMap[,1])] if(ncol(readMap)>2){ - mcols(readGrgList[[counter]])$UMI = readMap[,3][match(names(readGrgList[[counter]]),readMap[,1])] + mcols(readGrgList[[counter]])$UMI <- readMap[,3][match(names(readGrgList[[counter]]),readMap[,1])] } } cells <- unique(c(cells, mcols(readGrgList[[counter]])$BC)) @@ -59,17 +69,21 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, mcols(readGrgList[[counter]])$UMI <- factor(mcols(readGrgList[[counter]])$UMI, levels = umi) } if(cleanReads){ - softClip5Prime <-suppressWarnings(pmax(0,as.numeric(gsub('^(\\d*)[S].*','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T)) - softClip3Prime <-suppressWarnings(pmax(0,as.numeric(gsub('.*\\D(\\d*)[S]$','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T)) - hardClip5Prime <-suppressWarnings(pmax(0,as.numeric(gsub('^(\\d*)[H].*','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T)) - hardClip3Prime <-suppressWarnings(pmax(0,as.numeric(gsub('.*\\D(\\d*)[H]$','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T)) - mcols(readGrgList[[counter]])$clip5Prime = pmax(softClip5Prime, hardClip5Prime) - mcols(readGrgList[[counter]])$clip3Prime = pmax(softClip3Prime, hardClip3Prime) - rev = as.vector(strand(alignmentInfo) == '-') - rev2 = grepl("_-.+of", names(alignmentInfo)) - temp = mcols(readGrgList[[counter]])$clip5Prime - mcols(readGrgList[[counter]])$clip5Prime[rev != rev2] = mcols(readGrgList[[counter]])$clip3Prime[rev != rev2] - mcols(readGrgList[[counter]])$clip3Prime[rev != rev2] = temp[rev != rev2] + softClip5Prime <- clipFunction(cigarData = GenomicAlignments::cigar(alignmentInfo), grep_pattern = '^(\\d*)[S].*', replace_pattern = '\\1') + softClip3Prime <- clipFunction(cigarData = GenomicAlignments::cigar(alignmentInfo), grep_pattern = '.*\\D(\\d*)[S]$', replace_pattern = '\\1') + hardClip5Prime <- clipFunction(alignData = GenomicAlignments::cigar(alignmentInfo), grep_pattern = '^(\\d*)[H].*', replace_pattern = '\\1') + hardClip3Prime <- clipFunction(alignData = GenomicAlignments::cigar(alignmentInfo), grep_pattern = '.*\\D(\\d*)[H]$', replace_pattern = '\\1') + # softClip5Prime <-suppressWarnings(pmax(0,as.numeric(gsub('^(\\d*)[S].*','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T)) + # softClip3Prime <-suppressWarnings(pmax(0,as.numeric(gsub('.*\\D(\\d*)[S]$','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T)) + # hardClip5Prime <-suppressWarnings(pmax(0,as.numeric(gsub('^(\\d*)[H].*','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T)) + # hardClip3Prime <-suppressWarnings(pmax(0,as.numeric(gsub('.*\\D(\\d*)[H]$','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T)) + mcols(readGrgList[[counter]])$clip5Prime <- pmax(softClip5Prime, hardClip5Prime) + mcols(readGrgList[[counter]])$clip3Prime <- pmax(softClip3Prime, hardClip3Prime) + rev <- as.vector(strand(alignmentInfo) == '-') + rev2 <- grepl("_-.+of", names(alignmentInfo)) + temp <- mcols(readGrgList[[counter]])$clip5Prime + mcols(readGrgList[[counter]])$clip5Prime[rev != rev2] <- mcols(readGrgList[[counter]])$clip3Prime[rev != rev2] + mcols(readGrgList[[counter]])$clip3Prime[rev != rev2] <- temp[rev != rev2] } counter <- counter + 1 @@ -84,10 +98,10 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, } # remove microexons of width 1bp from list readGrgList <- readGrgList[width(readGrgList) > 1] - numNoBCs = sum(is.na(mcols(readGrgList)$BC)) + numNoBCs <- sum(is.na(mcols(readGrgList)$BC)) if(numNoBCs > 0){ message("Removing ", numNoBCs, " reads that were not assigned barcodes. If this is unexpected check the barcode map input") - readGrgList = readGrgList[!is.na(mcols(readGrgList)$BC)] + readGrgList <- readGrgList[!is.na(mcols(readGrgList)$BC)] } if(cleanReads){ #extract duplicated reads from flexiplex to clean @@ -102,10 +116,10 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, #select alignments closest to barcode start.ptm <- proc.time() - df = data.frame(name = names(readGrgList), + df <- data.frame(name = names(readGrgList), clip5 = mcols(readGrgList)$clip5Prime) - df = df %>% mutate(id = row_number()) %>% group_by(name) %>% summarise(primary.id = id[which.min(clip5)]) - readGrgList = unname(readGrgList[df$primary.id]) + df <- df %>% mutate(id = row_number()) %>% group_by(name) %>% summarise(primary.id = id[which.min(clip5)]) + readGrgList <- unname(readGrgList[df$primary.id]) end.ptm <- proc.time() message("Primary alignment selection time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") @@ -113,13 +127,13 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, if(dedupUMI){ #UMI deduplication by barcode start.ptm <- proc.time() - numUMIs = length(unique(mcols(readGrgList)$UMI)) + numUMIs <- length(na.omit(unique(mcols(readGrgList)$UMI))) # remove NA UMIs if(numUMIs > 100){ - df = data.frame(umi = mcols(readGrgList)$BC, + df <- data.frame(umi = mcols(readGrgList)$BC, barcode = mcols(readGrgList)$UMI, lengths = sum(width(readGrgList))) - df = df %>% mutate(id = row_number()) %>% group_by(barcode, umi) %>% summarise(primary.id = id[which.max(lengths)]) - readGrgList = readGrgList[df$primary.id] + df <- df %>% mutate(id = row_number()) %>% group_by(barcode, umi) %>% summarise(primary.id = id[which.max(lengths)]) + readGrgList <- readGrgList[df$primary.id] end.ptm <- proc.time() message("UMI deduplication time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") } else { @@ -129,8 +143,15 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, #readGrgList = c(readGrgList.filt, unname(readGrgList.keep)) } - if(!use.names.OG) {names(readGrgList) <- NULL } - seqlevels(readGrgList)=as.character(unique(getChrFromGrList(readGrgList))) + if(!use.names.OG) names(readGrgList) <- NULL + seqlevels(readGrgList) <- as.character(unique(getChrFromGrList(readGrgList))) return(readGrgList) } + +#' Function to clip sequences +#' @noRd +clipFunction <- function(cigarData, grep_pattern, replace_pattern){ + return(suppressWarnings(pmax(0,as.numeric(gsub(grep_pattern,replace_pattern, + cigarData)), na.rm=T))) +} \ No newline at end of file From 7a4fe5c8aaa06483d0407478d0613be91190a9e2 Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Tue, 21 Jan 2025 15:29:46 +0800 Subject: [PATCH 173/189] comment unused code after return in generateUniqueCounts function --- R/bambu-assignDist.R | 119 +++++++++++++++++++++++-------------------- 1 file changed, 65 insertions(+), 54 deletions(-) diff --git a/R/bambu-assignDist.R b/R/bambu-assignDist.R index 81416f02..25d2d3e2 100644 --- a/R/bambu-assignDist.R +++ b/R/bambu-assignDist.R @@ -7,91 +7,102 @@ assignReadClasstoTranscripts <- function(readClassList, annotations, isoreParame returnDistTable = FALSE, trackReads = TRUE) { if (is.character(readClassList)) readClassList <- readRDS(file = readClassList) metadata(readClassList)$readClassDist <- calculateDistTable(readClassList, annotations, isoreParameters, verbose, returnDistTable) - readClassList = splitReadClassFiles(readClassList) + readClassList <- splitReadClassFiles(readClassList) readClassDt <- genEquiRCs(metadata(readClassList)$readClassDist, annotations, verbose) readClassDt$eqClass.match = match(readClassDt$eqClassById,metadata(readClassList)$eqClassById) readClassDt <- simplifyNames(readClassDt) - readClassDt = readClassDt %>% group_by(eqClassId, gene_sid) %>% - mutate(multi_align = length(unique(txid))>1) %>% ungroup() %>% mutate(aval = 1) %>% + readClassDt <- readClassDt %>% group_by(eqClassId, gene_sid) %>% + mutate(multi_align = length(unique(txid))>1) %>% + ungroup() %>% + mutate(aval = 1) %>% data.table() #return non-em counts - ColData = generateColData(colnames(metadata(readClassList)$countMatrix), clusters = NULL, demultiplexed, spatial) + ColData <- generateColData(colnames(metadata(readClassList)$countMatrix), clusters = NULL, demultiplexed, spatial) quantData <- SummarizedExperiment(assays = SimpleList( counts = generateUniqueCounts(readClassDt, metadata(readClassList)$countMatrix, annotations)), rowRanges = annotations, colData = ColData) - colnames(quantData) = ColData$id + colnames(quantData) <- ColData$id if(sum(metadata(readClassList)$incompatibleCountMatrix)==0){ - metadata(quantData)$incompatibleCounts = NULL - } else{ - metadata(quantData)$incompatibleCounts = generateIncompatibleCounts(metadata(readClassList)$incompatibleCountMatrix, annotations) - } - metadata(quantData)$nonuniqueCounts = generateNonUniqueCounts(readClassDt, metadata(readClassList)$countMatrix, annotations) - metadata(quantData)$readClassDt = readClassDt - metadata(quantData)$countMatrix = metadata(readClassList)$countMatrix - metadata(quantData)$incompatibleCountMatrix = metadata(readClassList)$incompatibleCountMatrix - metadata(quantData)$sampleNames = metadata(readClassList)$sampleNames - if(returnDistTable){ - metadata(quantData)$distTable = metadata(metadata(readClassList)$readClassDist)$distTableOld + metadata(quantData)$incompatibleCounts <- NULL + }else{ + metadata(quantData)$incompatibleCounts <- generateIncompatibleCounts(metadata(readClassList)$incompatibleCountMatrix, annotations) } - if (trackReads){ - metadata(quantData)$readToTranscriptMap = - generateReadToTranscriptMap(readClassList, metadata(readClassList)$readClassDist, - annotations) - } + metadata(quantData)$nonuniqueCounts <- generateNonUniqueCounts(readClassDt, metadata(readClassList)$countMatrix, annotations) + metadata(quantData)$readClassDt <- readClassDt + metadata(quantData)$countMatrix <- metadata(readClassList)$countMatrix + metadata(quantData)$incompatibleCountMatrix <- metadata(readClassList)$incompatibleCountMatrix + metadata(quantData)$sampleNames <- metadata(readClassList)$sampleNames + if(returnDistTable) + metadata(quantData)$distTable <- metadata(metadata(readClassList)$readClassDist)$distTableOld + + if(trackReads) + metadata(quantData)$readToTranscriptMap <- + generateReadToTranscriptMap(readClassList, + metadata(readClassList)$readClassDist, + annotations) + return(quantData) } - +#' Generate unique counts +#' @noRd generateUniqueCounts <- function(readClassDt, countMatrix, annotations){ - x = readClassDt %>% filter(!multi_align & !is.na(eqClass.match)) - uniqueCounts = countMatrix[x$eqClass.match,] - uniqueCounts.tx = sparse.model.matrix(~ factor(x$txid) - 1) - uniqueCounts = t(uniqueCounts.tx) %*% uniqueCounts - rownames(uniqueCounts) = names(annotations)[match(as.numeric(levels(factor(x$txid))),mcols(annotations)$txid)] - counts = sparseMatrix(length(annotations), ncol(uniqueCounts), x = 0) - rownames(counts) = names(annotations) - counts[rownames(uniqueCounts),] = uniqueCounts + x <- readClassDt %>% filter(!multi_align & !is.na(eqClass.match)) + uniqueCounts <- countMatrix[x$eqClass.match,] + uniqueCounts.tx <- sparse.model.matrix(~ factor(x$txid) - 1) + uniqueCounts <- t(uniqueCounts.tx) %*% uniqueCounts + rownames(uniqueCounts) <- names(annotations)[match(as.numeric(levels(factor(x$txid))),mcols(annotations)$txid)] + counts <- sparseMatrix(length(annotations), ncol(uniqueCounts), x = 0) + rownames(counts) <- names(annotations) + counts[rownames(uniqueCounts),] <- uniqueCounts return(counts) - - counts.total = colSums(countMatrix) + colSums(incompatibleCountMatrix) - counts.total[counts.total==0] = 1 - counts.CPM = counts/counts.total * 10^6 + + # these three lines appear after return, so it's not used, is this used for debug only? + # counts.total = colSums(countMatrix) + colSums(incompatibleCountMatrix) + # counts.total[counts.total==0] = 1 + # counts.CPM = counts/counts.total * 10^6 } + +#' Generate incompatible counts +#' @noRd generateIncompatibleCounts <- function(incompatibleCountMatrix, annotations){ - genes = levels(factor(unique(mcols(annotations)$GENEID))) - rownames(incompatibleCountMatrix) = genes[as.numeric(rownames(incompatibleCountMatrix))] - geneMat = sparseMatrix(length(genes), ncol(incompatibleCountMatrix), x = 0) - rownames(geneMat) = genes - geneMat[rownames(incompatibleCountMatrix),] = incompatibleCountMatrix + genes <- levels(factor(unique(mcols(annotations)$GENEID))) + rownames(incompatibleCountMatrix) <- genes[as.numeric(rownames(incompatibleCountMatrix))] + geneMat <- sparseMatrix(length(genes), ncol(incompatibleCountMatrix), x = 0) + rownames(geneMat) <- genes + geneMat[rownames(incompatibleCountMatrix),] <- incompatibleCountMatrix return(geneMat) } + +#' Generate non-unique counts +#' @noRd generateNonUniqueCounts <- function(readClassDt, countMatrix, annotations){ #fuse multi align RCs by gene - x = readClassDt %>% filter(multi_align & !is.na(eqClass.match)) - x = x %>% distinct(eqClassId, .keep_all = TRUE) - nonuniqueCounts = countMatrix[x$eqClass.match,, drop = FALSE] + x <- readClassDt %>% filter(multi_align & !is.na(eqClass.match)) + x <- x %>% distinct(eqClassId, .keep_all = TRUE) + nonuniqueCounts <- countMatrix[x$eqClass.match,, drop = FALSE] if(nrow(x)>1 & length(unique(x$gene_sid))>1){ - nonuniqueCounts.gene = sparse.model.matrix(~ factor(x$gene_sid) - 1) - nonuniqueCounts = t(nonuniqueCounts.gene) %*% nonuniqueCounts + nonuniqueCounts.gene <- sparse.model.matrix(~ factor(x$gene_sid) - 1) + nonuniqueCounts <- t(nonuniqueCounts.gene) %*% nonuniqueCounts } else{ warning("The factor variable 'gene_sid' has only one level. Adjusting output.") - nonuniqueCounts.gene = Matrix(1, nrow = nrow(x), ncol = 1, sparse = TRUE) - nonuniqueCounts = t(nonuniqueCounts.gene) %*% nonuniqueCounts + nonuniqueCounts.gene <- Matrix(1, nrow = nrow(x), ncol = 1, sparse = TRUE) + nonuniqueCounts <- t(nonuniqueCounts.gene) %*% nonuniqueCounts } #covert ids into gene ids - geneids = as.numeric(levels(factor(x$gene_sid))) - geneids = x$txid[match(geneids, x$gene_sid)] - geneids = mcols(annotations)$GENEID[as.numeric(geneids)] - rownames(nonuniqueCounts) = geneids + geneids <- as.numeric(levels(factor(x$gene_sid))) + geneids <- x$txid[match(geneids, x$gene_sid)] + geneids <- mcols(annotations)$GENEID[as.numeric(geneids)] + rownames(nonuniqueCounts) <- geneids #create matrix for all annotated genes - genes = levels(factor(unique(mcols(annotations)$GENEID))) - geneMat = sparseMatrix(length(genes), ncol(nonuniqueCounts), x = 0) - rownames(geneMat) = genes - geneMat[rownames(nonuniqueCounts),] = nonuniqueCounts + genes <- levels(factor(unique(mcols(annotations)$GENEID))) + geneMat <- sparseMatrix(length(genes), ncol(nonuniqueCounts), x = 0) + rownames(geneMat) <- genes + geneMat[rownames(nonuniqueCounts),] <- nonuniqueCounts return(geneMat) } From 4f3c629acf8a0fbf4e4771defe7c5e3e7b4cf032 Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Tue, 21 Jan 2025 15:32:40 +0800 Subject: [PATCH 174/189] comment out some internal messages to avoid duplicated output for each sample --- R/bambu-quantify.R | 6 +-- R/bambu-quantify_utilityFunctions.R | 83 ++++++++++++++--------------- 2 files changed, 44 insertions(+), 45 deletions(-) diff --git a/R/bambu-quantify.R b/R/bambu-quantify.R index d996c189..68b41395 100644 --- a/R/bambu-quantify.R +++ b/R/bambu-quantify.R @@ -20,7 +20,7 @@ bambu.quantify <- function(readClassDt, countMatrix, incompatibleCountMatrix, tx fullLengthCounts = as(round(counts$fullLengthCounts,sig.digit), "sparseVector"), uniqueCounts = as(round(counts$uniqueCounts,sig.digit), "sparseVector")) end.ptm <- proc.time() - if (verbose) message("bambu.quantify ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") + # if (verbose) message("bambu.quantify ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") return(seOutput) } @@ -43,8 +43,8 @@ bambu.quantDT <- function(readClassDt = readClassDt, maxiter = emParameters[["maxiter"]], conv = emParameters[["conv"]], minvalue = emParameters[["minvalue"]]) end.ptm <- proc.time() - if (verbose) message("Finished EM estimation in ", - round((end.ptm - start.ptm)[3] / 60, 1), " mins.") + # if (verbose) message("Finished EM estimation in ", + # round((end.ptm - start.ptm)[3] / 60, 1), " mins.") outEst <- modifyQuantOut(outEst,outIni) theta_est <- rbind(rcPreOut[[2]],outEst) theta_est <- removeDuplicates(theta_est) diff --git a/R/bambu-quantify_utilityFunctions.R b/R/bambu-quantify_utilityFunctions.R index 0bb8c85d..936763f1 100644 --- a/R/bambu-quantify_utilityFunctions.R +++ b/R/bambu-quantify_utilityFunctions.R @@ -257,8 +257,8 @@ calculateDegradationRate <- function(readClassDt){ geneCountLength[, d_rate := dObs/nobs] if (length(which(geneCountLength$nobs >= 30 & ((geneCountLength$nobs - geneCountLength$dObs) >= 5))) == 0) { - message("There is not enough read count and full length coverage! - Hence degradation rate is estimated using all data!") + # message("There is not enough read count and full length coverage! + # Hence degradation rate is estimated using all data!") } else { geneCountLength <- geneCountLength[nobs >= 30 & ((nobs - dObs) >= 5)] } @@ -461,58 +461,57 @@ removeDuplicates <- function(counts){ #' Generate read to transcript mapping #' @noRd generateReadToTranscriptMap <- function(readClass, distTable, annotations){ - if(!is.null(metadata(readClass)$readNames)) { - read_id = metadata(readClass)$readNames} - else { read_id = metadata(readClass)$readId} - print(1) + if(!is.null(metadata(readClass)$readNames)) { + read_id <- metadata(readClass)$readNames + } else { + read_id <- metadata(readClass)$readId + } #unpack and reverse the read class to read id relationship - readOrder = order(unlist(rowData(readClass)$readIds)) - lens = lengths(rowData(readClass)$readIds) - rcIndex = seq_along(readClass) - readToRC = rep(rcIndex, lens)[readOrder] - read_id = read_id[(match(unlist(rowData(readClass)$readIds)[readOrder], metadata(readClass)$readId))] - print(2) + readOrder <- order(unlist(rowData(readClass)$readIds)) + lens <- lengths(rowData(readClass)$readIds) + rcIndex <- seq_along(readClass) + readToRC <- rep(rcIndex, lens)[readOrder] + read_id <- read_id[(match(unlist(rowData(readClass)$readIds)[readOrder], + metadata(readClass)$readId))] #get annotation indexs - distTable = metadata(distTable)$distTable - print(head(distTable)) - distTable$annotationTxId = match(distTable$annotationTxId, names(annotations)) - print(2.1) - print(head(distTable)) + distTable <- metadata(distTable)$distTable + distTable$annotationTxId <- match(distTable$annotationTxId, names(annotations)) #match read classes with transcripts - readClass_id = rownames(readClass)[readToRC] - distTable$exClassById = NULL - print(3) - equalMatches = as_tibble(distTable) %>% + readClass_id <- rownames(readClass)[readToRC] + distTable$exClassById <- NULL + equalMatches <- as_tibble(distTable) %>% filter(equal) %>% - group_by(readClassId) %>% summarise(annotationTxIds = list(annotationTxId)) - equalMatches = equalMatches$annotationTxIds[match(readClass_id, equalMatches$readClassId)] - print(4) - compatibleMatches = as_tibble(distTable) %>% + group_by(readClassId) %>% + summarise(annotationTxIds = list(annotationTxId)) + equalMatches <- equalMatches$annotationTxIds[match(readClass_id, + equalMatches$readClassId)] + compatibleMatches <- as_tibble(distTable) %>% filter(!equal & compatible) %>% group_by(readClassId) %>% summarise(annotationTxIds = list(annotationTxId)) - compatibleMatches = compatibleMatches$annotationTxIds[match(readClass_id, compatibleMatches$readClassId)] - print(5) - readToTranscriptMap = tibble(readId=read_id, equalMatches = equalMatches, compatibleMatches = compatibleMatches) + compatibleMatches <- compatibleMatches$annotationTxIds[match(readClass_id, + compatibleMatches$readClassId)] + readToTranscriptMap <- tibble(readId=read_id, equalMatches = equalMatches, + compatibleMatches = compatibleMatches) return(readToTranscriptMap) } #' Get counts of equivilent classes from a distTable and match to a readClassDt #' @noRd -calculateEqClassCounts = function(distTable, readClassDt){ - eqClasses = distTable %>% group_by(eqClassById) %>% - mutate(anyEqual = any(equal)) %>% - select(eqClassById, firstExonWidth,totalWidth, readCount,GENEID,anyEqual) %>% #eqClassByIdTemp, - distinct() %>% - mutate(nobs = sum(readCount), - rcWidth = ifelse(anyEqual, max(totalWidth), - max(firstExonWidth))) %>% - select(eqClassById,GENEID,nobs,rcWidth) %>% - ungroup() %>% - distinct() - eqCounts = eqClasses$nobs[match(readClassDt$eqClassById,eqClasses$eqClassById)] - eqCounts[is.na(eqCounts)] = 0 +calculateEqClassCounts <- function(distTable, readClassDt){ + eqClasses <- distTable %>% group_by(eqClassById) %>% + mutate(anyEqual = any(equal)) %>% + select(eqClassById, firstExonWidth,totalWidth, + readCount,GENEID,anyEqual) %>% #eqClassByIdTemp, + distinct() %>% + mutate(nobs = sum(readCount), + rcWidth = ifelse(anyEqual, max(totalWidth), + max(firstExonWidth))) %>% + select(eqClassById,GENEID,nobs,rcWidth) %>% + ungroup() %>% distinct() + eqCounts <- eqClasses$nobs[match(readClassDt$eqClassById,eqClasses$eqClassById)] + eqCounts[is.na(eqCounts)] <- 0 return(eqCounts) - } +} #' calculate CPM post estimation #' @noRd From 17b993a5d1cb31612bc52e2ffc23a4a0a3ddf245 Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Tue, 21 Jan 2025 15:34:31 +0800 Subject: [PATCH 175/189] fix bug for demultiplexed when demultiplexed is provided as a file --- R/bambu_utilityFunctions.R | 92 +++++++++++++++++++++----------------- 1 file changed, 51 insertions(+), 41 deletions(-) diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index db8a4626..7c7d1bcd 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -9,6 +9,7 @@ setBiocParallelParameters <- function(reads, ncore, verbose, demultiplexed){ "to resolve the issue that originates from the XGboost package.") bpParameters <- bpparam() #===# set parallel options: otherwise use parallel to distribute samples + # when demultiplexed is FALSE, isFALSE(demultiplexed) is TRUE bpParameters$workers <- ifelse(length(reads) == 1 & isFALSE(demultiplexed), 1, ncore) bpParameters$progressbar <- ifelse(length(reads) > 1 & !verbose, TRUE, FALSE) return(bpParameters) @@ -198,17 +199,20 @@ checkInputSequence <- function(genomeSequence) { #' Function that gathers warnings from several read class lists and outputs the counts #' @noRd handleWarnings <- function(readClassList, verbose){ - warnings = list() - sampleNames = c() + warnings <- list() + sampleNames <- c() for(i in seq_along(readClassList)){ - readClassSe = readClassList[[i]] - if (is.character(readClassSe)) { - readClassSe <- readRDS(file = readClassSe)} - warnings[[i]] = metadata(readClassSe)$warnings - if(is.null(metadata(readClassSe)$warnings)) {warnings[[i]] = NA} - sampleNames = c(sampleNames, colnames(readClassSe)) + readClassSe <- readClassList[[i]] + if (is.character(readClassSe)) + readClassSe <- readRDS(file = readClassSe) + + warnings[[i]] <- metadata(readClassSe)$warnings + + if(is.null(metadata(readClassSe)$warnings)) + warnings[[i]] <- NA + sampleNames <- c(sampleNames, colnames(readClassSe)) } - names(warnings) = sampleNames + names(warnings) <- sampleNames if(verbose & any(lengths(warnings)>0)){ message("--- per sample warnings during read class construction ---") for(i in seq_along(warnings)){ @@ -232,12 +236,12 @@ calculateDistTable <- function(readClassList, annotations, isoreParameters, verb min.primarySecondaryDistStartEnd = isoreParameters[['min.primarySecondaryDistStartEnd2']], verbose = verbose) metadata(readClassDist)$distTable <- modifyIncompatibleAssignment(metadata(readClassDist)$distTable) - if(returnDistTable) metadata(readClassDist)$distTableOld = metadata(readClassDist)$distTable + if(returnDistTable) metadata(readClassDist)$distTableOld <- metadata(readClassDist)$distTable #convert string gene ids into index to save memory - GENEIDs = factor(unique(mcols(annotations)$GENEID)) - GENEID.i = as.numeric(GENEIDs) - metadata(readClassDist)$distTable$GENEID.i = GENEID.i[match(metadata(readClassDist)$distTable$GENEID, GENEIDs)] - metadata(readClassDist)$distTable.incompatible = data.table(as.data.frame(metadata(readClassDist)$distTable)) %>% + GENEIDs <- factor(unique(mcols(annotations)$GENEID)) + GENEID.i <- as.numeric(GENEIDs) + metadata(readClassDist)$distTable$GENEID.i <- GENEID.i[match(metadata(readClassDist)$distTable$GENEID, GENEIDs)] + metadata(readClassDist)$distTable.incompatible <- data.table(as.data.frame(metadata(readClassDist)$distTable)) %>% filter(grepl("unidentified", annotationTxId)) %>% distinct(readClassId, .keep_all = TRUE) metadata(readClassDist)$distTable <- genEquiRCsBasedOnObservedReads(readClassDist) return(readClassDist) @@ -246,23 +250,27 @@ calculateDistTable <- function(readClassList, annotations, isoreParameters, verb #' Combine count se object while preserving the metadata objects #' @noRd combineCountSes <- function(countsSe, annotations){ - countsData <- c("counts", "CPM", "fullLengthCounts", "uniqueCounts", "incompatibleCounts") - sampleNames = countsSe$colnames - countsSe$colnames = NULL + countsData <- c("counts", "CPM", "fullLengthCounts", + "uniqueCounts", "incompatibleCounts") + sampleNames <- countsSe$colnames + countsSe$colnames <- NULL countsDataMat <- lapply(countsData, FUN = function(k){ countsVecList <- lapply(countsSe, function(j){j[[k]]}) - countsMat <- sparseMatrix(i = unlist(lapply(countsVecList, function(j){j@i})), - j = unlist(lapply(seq_along(countsVecList), function(j){rep(j, length(countsVecList[[j]]@i))})), - x = unlist(lapply(countsVecList, function(j){j@x})), + countsMat <- sparseMatrix(i = unlist(lapply(countsVecList, function(j) j@i)), + j = unlist(lapply(seq_along(countsVecList), function(j) rep(j, length(countsVecList[[j]]@i)))), + x = unlist(lapply(countsVecList, function(j) j@x)), dims = c(length(countsVecList[[1]]), length(countsVecList))) - if(all(is.na(countsMat))){countsMat = sparseMatrix(i=NULL, j = NULL, dims = c(length(countsVecList[[1]]), length(countsVecList)))} + if(all(is.na(countsMat))) + countsMat <- sparseMatrix(i=NULL, j = NULL, dims = c(length(countsVecList[[1]]), length(countsVecList))) + colnames(countsMat) <- sampleNames - if (k == "incompatibleCounts"){ - rownames(countsMat) = unique(mcols(annotations)$GENEID) - } + + if (k == "incompatibleCounts") + rownames(countsMat) <- unique(mcols(annotations)$GENEID) + return(countsMat) }) - names(countsDataMat) = countsData + names(countsDataMat) <- countsData countsSe <- SummarizedExperiment(assays = SimpleList(counts = countsDataMat$counts, CPM = countsDataMat$CPM, fullLengthCounts = countsDataMat$fullLengthCounts, @@ -275,29 +283,31 @@ combineCountSes <- function(countsSe, annotations){ #' Generate the coldata for se options using colnames, and other option inputs #' @noRd generateColData <- function(sampleNames, clusters, demultiplexed, spatial){ - ColData = DataFrame(id = sampleNames) - if(demultiplexed & is.null(clusters)){ - ColData = DataFrame(id = sampleNames, + ColData <- DataFrame(id = sampleNames) + if(!isFALSE(demultiplexed) & is.null(clusters)){ + ColData <- DataFrame(id = sampleNames, sampleName = gsub("_[^_]+$","", sampleNames, perl = TRUE), Barcode = gsub(".*_(?=[^_]*$)","", sampleNames, perl = TRUE)) } if(!is.null(spatial) & is.null(clusters)){ - ColData$x_coordinate = NA - ColData$y_coordinate = NA + ColData$x_coordinate <- NA + ColData$y_coordinate <- NA if(length(spatial)==1){ - bc_coords = DataFrame(read.table(gzfile(spatial), col.names = c("Barcode", "x_coordinate", "y_coordinate"))) - bcMatch = match(ColData$Barcode, bc_coords$Barcode) - ColData$x_coordinate = bc_coords$x_coordinate[bcMatch] - ColData$y_coordinate = bc_coords$y_coordinate[bcMatch] + bc_coords <- DataFrame(read.table(gzfile(spatial), + col.names = c("Barcode", "x_coordinate", "y_coordinate"))) + bcMatch <- match(ColData$Barcode, bc_coords$Barcode) + ColData$x_coordinate <- bc_coords$x_coordinate[bcMatch] + ColData$y_coordinate <- bc_coords$y_coordinate[bcMatch] } else{ - spatial.unique = unique(spatial) + spatial.unique <- unique(spatial) for(whitelist in spatial.unique){ - i = which(spatial.unique==whitelist) - bc_coords = DataFrame(read.table(gzfile(whitelist), col.names = c("Barcode", "x_coordinate", "y_coordinate"))) - bcSampleIndex = ColData$sampleName %in% sampleNames[i] - bcMatch = match(ColData$Barcode[bcSampleIndex], bc_coords$Barcode) - ColData$x_coordinate[bcSampleIndex] = bc_coords$x_coordinate[bcMatch] - ColData$y_coordinate[bcSampleIndex] = bc_coords$y_coordinate[bcMatch] + i <- which(spatial.unique==whitelist) + bc_coords <- DataFrame(read.table(gzfile(whitelist), + col.names = c("Barcode", "x_coordinate", "y_coordinate"))) + bcSampleIndex <- ColData$sampleName %in% sampleNames[i] + bcMatch <- match(ColData$Barcode[bcSampleIndex], bc_coords$Barcode) + ColData$x_coordinate[bcSampleIndex] <- bc_coords$x_coordinate[bcMatch] + ColData$y_coordinate[bcSampleIndex] <- bc_coords$y_coordinate[bcMatch] } } } From 9f7b49b208e4c7f203b3b5c9a26b8a03481b5569 Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Tue, 21 Jan 2025 15:35:11 +0800 Subject: [PATCH 176/189] code style updates --- R/bambu-processReads.R | 225 +++++++++++++++++++++++------------------ R/bambu.R | 144 +++++++++++++++----------- 2 files changed, 212 insertions(+), 157 deletions(-) diff --git a/R/bambu-processReads.R b/R/bambu-processReads.R index e7a65a6c..b62e67a1 100644 --- a/R/bambu-processReads.R +++ b/R/bambu-processReads.R @@ -48,11 +48,11 @@ bambu.processReads <- function(reads, annotations, genomeSequence, names(reads)[seq_along(sampleNames)] <- sampleNames } } - min.readCount = isoreParameters[["min.readCount"]] - fitReadClassModel = isoreParameters[["fitReadClassModel"]] - defaultModels = isoreParameters[["defaultModels"]] - returnModel = isoreParameters[["returnModel"]] - min.exonOverlap = isoreParameters[["min.exonOverlap"]] + min.readCount <- isoreParameters[["min.readCount"]] + fitReadClassModel <- isoreParameters[["fitReadClassModel"]] + defaultModels <- isoreParameters[["defaultModels"]] + returnModel <- isoreParameters[["returnModel"]] + min.exonOverlap <- isoreParameters[["min.exonOverlap"]] if(processByBam){ # bulk mode readClassList <- bplapply(seq_along(reads), function(i) { @@ -74,32 +74,38 @@ bambu.processReads <- function(reads, annotations, genomeSequence, trackReads = trackReads, fusionMode = fusionMode, demultiplexed = demultiplexed, cleanReads = cleanReads, dedupUMI = dedupUMI, index = i, barcodesToFilter = barcodesToFilter)}, BPPARAM = bpParameters) - sampleNames = as.numeric(as.factor(sampleNames)) + sampleNames <- as.numeric(as.factor(sampleNames)) for(i in seq_along(readGrgList)){ if(!isFALSE(demultiplexed)){ - mcols(readGrgList[[i]])$BC = paste0(names(reads)[i], '_', mcols(readGrgList[[i]])$BC) - } else{mcols(readGrgList[[i]])$BC = sampleNames[i]} - mcols(readGrgList[[i]])$BC = as.factor(mcols(readGrgList[[i]])$BC) + mcols(readGrgList[[i]])$BC <- paste0(names(reads)[i], '_', mcols(readGrgList[[i]])$BC) + } else{ + mcols(readGrgList[[i]])$BC <- sampleNames[i] + } + + mcols(readGrgList[[i]])$BC <- as.factor(mcols(readGrgList[[i]])$BC) + if(!isFALSE(demultiplexed)){ - mcols(readGrgList[[i]])$sampleID = as.numeric(mcols(readGrgList[[i]])$BC) - } else {mcols(readGrgList[[i]])$sampleID = i} + mcols(readGrgList[[i]])$sampleID <- as.numeric(mcols(readGrgList[[i]])$BC) + } else { + mcols(readGrgList[[i]])$sampleID <- i + } } - readGrgList = do.call(c, readGrgList) + readGrgList <- do.call(c, readGrgList) mcols(readGrgList)$id <- seq_along(readGrgList) readClassList <- constructReadClasses(readGrgList, genomeSequence = genomeSequence,annotations = annotations, stranded = stranded, min.readCount = min.readCount, fitReadClassModel = fitReadClassModel, min.exonOverlap = min.exonOverlap, defaultModels = defaultModels, returnModel = returnModel, verbose = verbose, processByChromosome = processByChromosome, trackReads = trackReads, fusionMode = fusionMode) - metadata(readClassList)$samples = names(reads) - metadata(readClassList)$sampleNames = names(reads) - if(!isFALSE(demultiplexed))metadata(readClassList)$samples = levels(mcols(readGrgList)$BC) - readClassList = list(readClassList) + metadata(readClassList)$samples <- names(reads) + metadata(readClassList)$sampleNames <- names(reads) + if(!isFALSE(demultiplexed)) metadata(readClassList)$samples <- levels(mcols(readGrgList)$BC) + readClassList <- list(readClassList) } if (!is.null(readClass.outputDir)) { for(i in seq_along(readClassList)){ - readClassFile = "combinedSamples" + readClassFile <- "combinedSamples" if(lowMemory){ readClassFile <- metadata(readClassList[[i]])$sampleNames } @@ -127,10 +133,10 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, if(verbose) message(names(bam.file)[1]) readGrgList <- prepareDataFromBam(bam.file[[1]], verbose = verbose, yieldSize = yieldSize, use.names = trackReads, demultiplexed = demultiplexed, cleanReads = cleanReads, dedupUMI = dedupUMI) if(verbose) message(paste0("Number of alignments/reads: ",length(readGrgList))) - warnings = c() - if(!is.null(barcodesToFilter) & demultiplexed) - readGrgList = readGrgList[!(mcols(readGrgList)$BC %in% barcodesToFilter)] - warnings = seqlevelCheckReadsAnnotation(readGrgList, annotations) + warnings <- c() + if(!is.null(barcodesToFilter) & !isFALSE(demultiplexed)) + readGrgList <- readGrgList[!(mcols(readGrgList)$BC %in% barcodesToFilter)] + warnings <- seqlevelCheckReadsAnnotation(readGrgList, annotations) if(verbose & length(warnings) > 0) warning(paste(warnings,collapse = "\n")) #check seqlevels for consistency, drop ranges not present in genomeSequence refSeqLevels <- seqlevels(genomeSequence) @@ -138,17 +144,17 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, refSeqLevels <- intersect(refSeqLevels, seqlevels(readGrgList)) if (!all(seqlevels(annotations) %in% refSeqLevels)&(!(length(annotations)==0))) { refSeqLevels <- intersect(refSeqLevels, seqlevels(annotations)) - warningText = paste0("not all chromosomes from annotations present in ", + warningText <- paste0("not all chromosomes from annotations present in ", "reference genome sequence, annotations without reference genomic sequence ", "are dropped") - warnings = c(warnings, warningText) + warnings <- c(warnings, warningText) if(verbose) warning(warningText) annotations <- keepSeqlevels(annotations, value = refSeqLevels, pruning.mode = "coarse") } - warningText = paste0("not all chromosomes from reads present in reference ", + warningText <- paste0("not all chromosomes from reads present in reference ", "genome sequence, reads without reference chromosome sequence are dropped") - warnings = c(warnings, warningText) + warnings <- c(warnings, warningText) if(verbose) warning(warningText) readGrgList <- keepSeqlevels(readGrgList, value = refSeqLevels, pruning.mode = "coarse") @@ -156,29 +162,33 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, mcols(readGrgList)$id <- seq_along(readGrgList) } #removes reads that are outside genome coordinates - badReads = which(max(end(ranges(readGrgList)))> + badReads <- which(max(end(ranges(readGrgList)))> seqlengths(genomeSequence)[as.character(getChrFromGrList(readGrgList))]) if(length(badReads) > 0 ){ - readGrgList = readGrgList[-badReads] - warningText = paste0(length(badReads), " reads are mapped outside the provided ", + readGrgList <- readGrgList[-badReads] + warningText <- paste0(length(badReads), " reads are mapped outside the provided ", "genomic regions. These reads will be dropped. Check you are using the ", "same genome used for the alignment") - warnings = c(warnings, warningText) + warnings <- c(warnings, warningText) if(verbose) warning(warningText) } - if(length(readGrgList) == 0) { + if(length(readGrgList) == 0) stop("No reads left after filtering.") - } + mcols(readGrgList)$id <- seq_along(readGrgList) - sampleName = names(bam.file)[1] + sampleName <- names(bam.file)[1] if(!isFALSE(demultiplexed)){ - mcols(readGrgList)$BC = paste0(sampleName, '_', mcols(readGrgList)$BC) - } else{mcols(readGrgList)$BC = sampleName} - mcols(readGrgList)$BC = as.factor(mcols(readGrgList)$BC) + mcols(readGrgList)$BC <- paste0(sampleName, '_', mcols(readGrgList)$BC) + } else{ + mcols(readGrgList)$BC <- sampleName + } + mcols(readGrgList)$BC <- as.factor(mcols(readGrgList)$BC) if(!isFALSE(demultiplexed)){ - mcols(readGrgList)$sampleID = as.numeric(mcols(readGrgList)$BC) - } else {mcols(readGrgList)$sampleID = index} + mcols(readGrgList)$sampleID <- as.numeric(mcols(readGrgList)$BC) + } else { + mcols(readGrgList)$sampleID <- index + } # construct read classes for each chromosome seperately if(processByChromosome){ @@ -194,10 +204,10 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, } - metadata(se)$warnings = warnings + metadata(se)$warnings <- warnings if(trackReads){ - metadata(se)$readNames = names(readGrgList) - metadata(se)$readId = mcols(readGrgList)$id + metadata(se)$readNames <- names(readGrgList) + metadata(se)$readId <- mcols(readGrgList)$id } refSeqLevels <- seqlevels(genomeSequence) GenomeInfoDb::seqlevels(se) <- refSeqLevels @@ -211,9 +221,9 @@ bambu.processReadsByFile <- function(bam.file, genomeSequence, annotations, fusionMode = fusionMode, verbose = verbose) - metadata(se)$samples = names(bam.file)[1] - metadata(se)$sampleNames = names(bam.file)[1] - if(!isFALSE(demultiplexed))metadata(se)$samples = levels(mcols(readGrgList)$BC) + metadata(se)$samples <- names(bam.file)[1] + metadata(se)$sampleNames <- names(bam.file)[1] + if(!isFALSE(demultiplexed)) metadata(se)$samples <- levels(mcols(readGrgList)$BC) return(se) } @@ -227,44 +237,48 @@ bambu.readsByFile <- function(bam.file, genomeSequence, annotations, verbose = FALSE, trackReads = FALSE, fusionMode = FALSE, demultiplexed = FALSE, cleanReads = TRUE, dedupUMI = FALSE, index = 0, barcodesToFilter = NULL) { readGrgList <- prepareDataFromBam(bam.file[[1]], verbose = verbose, yieldSize = yieldSize, use.names = trackReads, demultiplexed = demultiplexed, cleanReads = cleanReads, dedupUMI = dedupUMI) - if(!is.null(barcodesToFilter) & demultiplexed){ readGrgList = readGrgList[!mcols(readGrgList)$CB %in% barcodesToFilter]} + + if(!is.null(barcodesToFilter) & !isFALSE(demultiplexed)) readGrgList <- readGrgList[!mcols(readGrgList)$BC %in% barcodesToFilter] + if(verbose) message("Number of alignments/reads: ",length(readGrgList)) - warnings = c() - warnings = seqlevelCheckReadsAnnotation(readGrgList, annotations) - if(verbose & length(warnings) > 0) {warning(paste(warnings,collapse = "\n"))} + + warnings <- c() + warnings <- seqlevelCheckReadsAnnotation(readGrgList, annotations) + + if(verbose & length(warnings) > 0) warning(paste(warnings,collapse = "\n")) #check seqlevels for consistency, drop ranges not present in genomeSequence refSeqLevels <- seqlevels(genomeSequence) if (!all(seqlevels(readGrgList) %in% refSeqLevels)) { refSeqLevels <- intersect(refSeqLevels, seqlevels(readGrgList)) if (!all(seqlevels(annotations) %in% refSeqLevels)&(!(length(annotations)==0))) { refSeqLevels <- intersect(refSeqLevels, seqlevels(annotations)) - warningText = paste0("not all chromosomes from annotations present in ", + warningText <- paste0("not all chromosomes from annotations present in ", "reference genome sequence, annotations without reference genomic sequence ", "are dropped") - warnings = c(warnings, warningText) - if(verbose){warning(warningText)} + warnings <- c(warnings, warningText) + if(verbose) warning(warningText) annotations <- keepSeqlevels(annotations, value = refSeqLevels, pruning.mode = "coarse") } - warningText = paste0("not all chromosomes from reads present in reference ", + warningText <- paste0("not all chromosomes from reads present in reference ", "genome sequence, reads without reference chromosome sequence are dropped") - warnings = c(warnings, warningText) - if(verbose){warning(warningText)} + warnings <- c(warnings, warningText) + if(verbose) warning(warningText) readGrgList <- keepSeqlevels(readGrgList, value = refSeqLevels, pruning.mode = "coarse") # reassign Ids after seqlevels are dropped mcols(readGrgList)$id <- seq_along(readGrgList) } #removes reads that are outside genome coordinates - badReads = which(max(end(ranges(readGrgList)))>= + badReads <- which(max(end(ranges(readGrgList)))>= seqlengths(genomeSequence)[as.character(getChrFromGrList(readGrgList))]) if(length(badReads) > 0 ){ - readGrgList = readGrgList[-badReads] - warningText = paste0(length(badReads), " reads are mapped outside the provided ", + readGrgList <- readGrgList[-badReads] + warningText <- paste0(length(badReads), " reads are mapped outside the provided ", "genomic regions. These reads will be dropped. Check you are using the ", "same genome used for the alignment") - warnings = c(warnings, warningText) - if(verbose){warning(warningText)} + warnings <- c(warnings, warningText) + if(verbose) warning(warningText) } ### add ### @@ -272,9 +286,8 @@ bambu.readsByFile <- function(bam.file, genomeSequence, annotations, mcols(readGrgList)$id <- seq_along(readGrgList) ### add ### if(verbose) message("Number of post-filter alignments/reads: ",length(readGrgList)) - if(length(readGrgList) == 0) { + if(length(readGrgList) == 0) stop("No reads left after filtering.") - } ## add ### #if (isTRUE(demultiplexed)){ @@ -292,11 +305,13 @@ bambu.readsByFile <- function(bam.file, genomeSequence, annotations, return(readGrgList) } +#' Construct read classes +#' @noRd constructReadClasses <- function(readGrgList, genomeSequence, annotations, stranded = FALSE, min.readCount = 2, fitReadClassModel = TRUE, min.exonOverlap = 10, defaultModels = NULL, returnModel = FALSE, verbose = FALSE, processByChromosome = FALSE, trackReads = FALSE, fusionMode = FALSE){ - warnings = c() ###TODO + warnings <- c() ###TODO if(processByChromosome){ # construct read classes for each chromosome seperately @@ -311,10 +326,10 @@ constructReadClasses <- function(readGrgList, genomeSequence, annotations, annotations, stranded, verbose) } - metadata(se)$warnings = warnings + metadata(se)$warnings <- warnings if(trackReads){ - metadata(se)$readNames = names(readGrgList) - metadata(se)$readId = mcols(readGrgList)$id + metadata(se)$readNames <- names(readGrgList) + metadata(se)$readId <- mcols(readGrgList)$id } rm(readGrgList) refSeqLevels <- seqlevels(genomeSequence) @@ -331,15 +346,18 @@ constructReadClasses <- function(readGrgList, genomeSequence, annotations, return(se) } + +#' Low memory mode for construct read classes (processByChromosome) +#' @noRd lowMemoryConstructReadClasses <- function(readGrgList, genomeSequence, annotations, stranded, verbose,bam.file, fusionMode = FALSE){ if(fusionMode){ - readGrgList = list(readGrgList) - names(readGrgList) = c("fusion") + readGrgList <- list(readGrgList) + names(readGrgList) <- c("fusion") } else{ - readGrgList = split(readGrgList, getChrFromGrList(readGrgList)) + readGrgList <- split(readGrgList, getChrFromGrList(readGrgList)) } - se = lapply(names(readGrgList),FUN = function(i){ + se <- lapply(names(readGrgList),FUN = function(i){ if(length(readGrgList[[i]]) == 0) return(NULL) # create error and strand corrected junction tables unlisted_junctions <- unlistIntrons(readGrgList[[i]], use.ids = TRUE) @@ -350,9 +368,9 @@ lowMemoryConstructReadClasses <- function(readGrgList, genomeSequence, annotations, stranded, verbose) return(se.temp) }) - se = se[!sapply(se, FUN = is.null)] - se = do.call("rbind",se) - rownames(se) = paste("rc", seq_len(nrow(se)), sep = ".") + se <- se[!sapply(se, FUN = is.null)] + se <- do.call("rbind",se) + rownames(se) <- paste("rc", seq_len(nrow(se)), sep = ".") return(se) } @@ -360,62 +378,70 @@ lowMemoryConstructReadClasses <- function(readGrgList, genomeSequence, #' @importFrom GenomeInfoDb seqlevels #' @noRd seqlevelCheckReadsAnnotation <- function(reads, annotations){ - warnings = c() + warnings <- c() if (length(intersect(seqlevels(reads), seqlevels(annotations))) == 0) - warnings = c(warnings, paste0("no annotations with matching seqlevel styles, ", + warnings <- c(warnings, paste0("no annotations with matching seqlevel styles, ", "all missing chromosomes will use de-novo annotations")) if (!all(seqlevels(reads) %in% seqlevels(annotations))) - warnings = c(warnings, paste0("not all chromosomes present in reference annotations, ", + warnings <- c(warnings, paste0("not all chromosomes present in reference annotations, ", "annotations might be incomplete. Please compare objects ", "on the same reference")) return(warnings) } + +#' Split read class files +#' @importFrom dplyr Matrix +#' @noRd splitReadClassFiles = function(readClassFile){ - distTable = metadata(metadata(readClassFile)$readClassDist)$distTable - eqClasses = distTable %>% group_by(eqClassById) %>% + distTable <- metadata(metadata(readClassFile)$readClassDist)$distTable + eqClasses <- distTable %>% group_by(eqClassById) %>% distinct(eqClassById, readCount,GENEID, totalWidth, firstExonWidth, .keep_all = TRUE) - eqClasses$sampleIDs = rowData(readClassFile)$sampleIDs[match(eqClasses$readClassId, rownames(readClassFile))] - eqClasses = eqClasses %>% summarise(nobs = sum(readCount), + eqClasses$sampleIDs <- rowData(readClassFile)$sampleIDs[match(eqClasses$readClassId, rownames(readClassFile))] + eqClasses <- eqClasses %>% summarise(nobs = sum(readCount), sampleIDs = list(unlist(sampleIDs))) - counts.table = lapply(eqClasses$sampleIDs, FUN = function(x){table(x)}) - counts = sparseMatrix( + counts.table <- tableFunction(eqClasses$sampleIDs) + counts <- sparseMatrix( i = rep(seq_along(counts.table), lengths(counts.table)), j = as.numeric(names(unlist(counts.table))), x = unlist(counts.table), dims = c(nrow(eqClasses), length(metadata(readClassFile)$samples))) #incompatible counts - distTable = metadata(metadata(readClassFile)$readClassDist)$distTable.incompatible + distTable <- metadata(metadata(readClassFile)$readClassDist)$distTable.incompatible if(nrow(distTable)==0) { - counts.incompatible = sparseMatrix(i= 1, j = 1, x = 0, + counts.incompatible <- sparseMatrix(i= 1, j = 1, x = 0, dims = c(1, length(metadata(readClassFile)$samples))) - rownames(counts.incompatible) = "TODO" + rownames(counts.incompatible) <- "TODO" } else{ - distTable$sampleIDs = rowData(readClassFile)$sampleIDs[match(distTable$readClassId, rownames(readClassFile))] - distTable = distTable %>% group_by(GENEID.i) %>% summarise(counts = sum(readCount), + distTable$sampleIDs <- rowData(readClassFile)$sampleIDs[match(distTable$readClassId, rownames(readClassFile))] + distTable <- distTable %>% group_by(GENEID.i) %>% summarise(counts = sum(readCount), sampleIDs = list(unlist(sampleIDs))) - counts.table = lapply(distTable$sampleIDs, FUN = function(x){table(x)}) - counts.incompatible = sparseMatrix( + counts.table <- lapply(distTable$sampleIDs, FUN = function(x){table(x)}) + counts.incompatible <- sparseMatrix( i = rep(seq_along(counts.table), lengths(counts.table)), j = as.numeric(names(unlist(counts.table))), x = unlist(counts.table), dims = c(nrow(distTable), length(metadata(readClassFile)$samples))) - colnames(counts.incompatible) = metadata(readClassFile)$samples - rownames(counts.incompatible) = distTable$GENEID.i + colnames(counts.incompatible) <- metadata(readClassFile)$samples + rownames(counts.incompatible) <- distTable$GENEID.i } - colnames(counts) = metadata(readClassFile)$samples - metadata(readClassFile)$eqClassById = eqClasses$eqClassById + colnames(counts) <- metadata(readClassFile)$samples + metadata(readClassFile)$eqClassById <- eqClasses$eqClassById #rownames(counts) = eqClasses$eqClassById - metadata(readClassFile)$countMatrix = counts - metadata(readClassFile)$incompatibleCountMatrix = counts.incompatible - return(readClassFile ) + metadata(readClassFile)$countMatrix <- counts + metadata(readClassFile)$incompatibleCountMatrix <- counts.incompatible + return(readClassFile) } -splitReadClassFilesByRC = function(readClassFile){ - counts.table = lapply(rowData(readClassFile)$sampleIDs, FUN = function(x){table(x)}) - counts = sparseMatrix( + +#' Split read class files by RC +#' @importFrom Matrix +#' @noRd +splitReadClassFilesByRC <- function(readClassFile){ + counts.table <- tableFunction(rowData(readClassFile)$sampleIDs) + counts <- sparseMatrix( i = rep(seq_along(counts.table), lengths(counts.table)), j = as.numeric(names(unlist(counts.table))), x = unlist(counts.table), @@ -423,3 +449,8 @@ splitReadClassFilesByRC = function(readClassFile){ return(counts) } +#' table sample IDs list column +#' @noRd +tableFunction <- function(xList){ + return(lapply(xList, function(x) table(x))) +} diff --git a/R/bambu.R b/R/bambu.R index 18047be9..c36f5bb8 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -145,31 +145,38 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, message(paste0("Running Bambu-v", "3.3.0")) if(!is.null(mode)){ if(mode == "bulk"){ - processByChromosome = FALSE - processByBam = TRUE + processByChromosome <- FALSE + processByBam <- TRUE } if(mode == "multiplexed"){ - if(is.null(demultiplexed)) demultiplexed = TRUE - cleanReads = TRUE - opt.em = list(degradationBias = FALSE) - quant = FALSE - processByChromosome = TRUE + if(is.null(demultiplexed)) + demultiplexed <- TRUE + cleanReads <- TRUE + opt.em <- list(degradationBias = FALSE) + quant <- FALSE + processByChromosome <- TRUE } if(mode == "fusion"){ - NDR = 1 - fusionMode = TRUE + NDR <- 1 + fusionMode <- TRUE } if(mode == "debug"){ - verbose = TRUE - trackReads = TRUE - returnDistTable = TRUE + verbose <- TRUE + trackReads <- TRUE + returnDistTable <- TRUE } } - if(lowMemory){message("lowMemory has been deprecated and split into processByChromosome and processByBam. Please see Documentation")} - if(is.null(annotations)) { annotations = GRangesList() - } else annotations <- checkInputs(annotations, reads, - readClass.outputDir = rcOutDir, genomeSequence = genome, discovery = discovery, + if(lowMemory) + message("lowMemory has been deprecated and split into processByChromosome and processByBam. Please see Documentation") + + if(is.null(annotations)){ + annotations <- GRangesList() + } else { + annotations <- checkInputs(annotations, reads, + readClass.outputDir = rcOutDir, + genomeSequence = genome, discovery = discovery, sampleNames = sampleNames, spatial = spatial) + } isoreParameters <- setIsoreParameters(isoreParameters = opt.discovery) #below line is to be compatible with earlier version of running bambu if(!is.null(isoreParameters$max.txNDR)) NDR = isoreParameters$max.txNDR @@ -178,11 +185,13 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, bpParameters <- setBiocParallelParameters(reads, ncore, verbose, demultiplexed) rm.readClassSe <- FALSE - readClassList = reads - isRDSs = all(sapply(reads, class)=="RangedSummarizedExperiment") - isBamFiles = !isRDSs - warnings = NULL - if(!isRDSs) isBamFiles = ifelse(!is(reads, "BamFileList"), all(grepl(".bam$", reads)), FALSE) + readClassList <- reads + isRDSs <- all(sapply(reads, class)=="RangedSummarizedExperiment") + isBamFiles <- !isRDSs + warnings <- NULL + if(!isRDSs) + isBamFiles <- ifelse(!is(reads, "BamFileList"), + all(grepl(".bam$", reads)), FALSE) if (isBamFiles | is(reads, "BamFileList")) { if (length(reads) > 10 & (is.null(rcOutDir))) { rcOutDir <- tempdir() #>=10 samples, save to temp folder @@ -196,11 +205,12 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, genomeSequence = genome, readClass.outputDir = rcOutDir, yieldSize = yieldSize, bpParameters = bpParameters, stranded = stranded, verbose = verbose, - isoreParameters = isoreParameters, trackReads = trackReads, fusionMode = fusionMode, + isoreParameters = isoreParameters, trackReads = trackReads, + fusionMode = fusionMode, processByChromosome = processByChromosome, processByBam = processByBam, demultiplexed = demultiplexed, - sampleNames = sampleNames, cleanReads = cleanReads, dedupUMI = dedupUMI, - barcodesToFilter = barcodesToFilter) + sampleNames = sampleNames, cleanReads = cleanReads, + dedupUMI = dedupUMI,barcodesToFilter = barcodesToFilter) } #warnings = handleWarnings(readClassList, verbose) @@ -213,68 +223,82 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, #### cluster based transcript discovery if(!is.null(clusters)){ - annotations.clusters = isore.extendAnnotations.clusters(readClassList, annotations, clusters, NDR, + annotations.clusters <- isore.extendAnnotations.clusters(readClassList, + annotations, clusters, NDR, isoreParameters, stranded, bpParameters, fusionMode, verbose = FALSE) - metadata(extendedAnnotations)$clusters = annotations.clusters + metadata(extendedAnnotations)$clusters <- annotations.clusters } - annotations = extendedAnnotations + annotations <- extendedAnnotations if (!quant & !assignDist) return(annotations) } if(assignDist){ message("--- Start calculating equivilance classes ---") - quantData = bplapply(readClassList, FUN = assignReadClasstoTranscripts, - annotations = annotations, isoreParameters = isoreParameters, verbose = verbose, - demultiplexed = demultiplexed, spatial = spatial, returnDistTable = returnDistTable, - trackReads = trackReads, - BPPARAM = bpParameters) + quantData <- bplapply(readClassList, + FUN = assignReadClasstoTranscripts, + annotations = annotations, + isoreParameters = isoreParameters, + verbose = verbose, + demultiplexed = demultiplexed, + spatial = spatial, + returnDistTable = returnDistTable, + trackReads = trackReads, + BPPARAM = bpParameters) if (!quant) return(quantData) } if (quant) { message("--- Start isoform EM quantification ---") if(!is.null(NDR) & !discovery) - annotations = setNDR(annotations, NDR, prefix = isoreParameters$prefix, + annotations <- setNDR(annotations, NDR, + prefix = isoreParameters$prefix, baselineFDR = isoreParameters[["baselineFDR"]], defaultModels2 = isoreParameters[["defaultModels"]]) if(length(annotations)==0) stop("No valid annotations, if running de novo please try less stringent parameters") if(is.null(quantData)) stop("quantData must be provided or assignDist = TRUE") - GENEIDs.i = as.numeric(factor(unique(mcols(annotations)$GENEID))) + GENEIDs.i <- as.numeric(factor(unique(mcols(annotations)$GENEID))) start.ptm <- proc.time() - countsSeCompressed.all = NULL - ColNames = c() + countsSeCompressed.all <- NULL + ColNames <- c() for(i in seq_along(quantData)){ - quantData_i = quantData[[i]] + quantData_i <- quantData[[i]] #load in the barcode clustering from file if provided - iter = seq_len(ncol(metadata(quantData_i)$countMatrix)) # iter is integer + iter <- seq_len(ncol(metadata(quantData_i)$countMatrix)) # iter is integer if(!is.null(clusters)){ if(!is.list(clusters)){ - clusterMaps = NULL + clusterMaps <- NULL for(j in seq_along(metadata(quantData_i)$sampleNames)){ #load in a file per sample name provided - clusterMap = read.table(clusters[[j]], - sep = ifelse(grepl(".tsv$",clusters[[j]]), "\t", ","), header = FALSE) - clusterMap[,1] = paste0(metadata(quantData_i)$sampleNames[j],"_",clusterMap[,1]) - clusterMaps = rbind(clusterMaps, clusterMap) + clusterMap <- fread(clusters[[j]], header = FALSE, + data.table = FALSE) + # read.table(clusters[[j]], + # sep = ifelse(grepl(".tsv$",clusters[[j]]), "\t", ","), + # header = FALSE) + clusterMap[,1] <- paste0(metadata(quantData_i)$sampleNames[j], + "_",clusterMap[,1]) + clusterMaps <- rbind(clusterMaps, clusterMap) } - clustering = splitAsList(clusterMaps[,1], clusterMaps[,2]) + clustering <- splitAsList(clusterMaps[,1], clusterMaps[,2]) rm(clusterMaps) rm(clusterMap) - iter = clustering + iter <- clustering } else{ #if clusters is a list - if(length(quantData)>1){iter = clusters[[i]] #lowMemory mode - }else(iter = do.call(c,clusters)) + if(length(quantData)>1){ + iter <- clusters[[i]] #lowMemory mode + }else{ + iter <- do.call(c,clusters) + } } } countsSeCompressed <- bplapply(iter, FUN = function(j){ # previous i changed to j to avoid duplicated assignment #i = iter[i %in% colnames(metadata(quantData_i)$countMatrix)] #bug, after assignment, i become emptyprint(i) - countMatrix = unname(metadata(quantData_i)$countMatrix[,j]) # same here - incompatibleCountMatrix = unname(metadata(quantData_i)$incompatibleCountMatrix[,j]) # same here + countMatrix <- unname(metadata(quantData_i)$countMatrix[,j]) # same here + incompatibleCountMatrix <- unname(metadata(quantData_i)$incompatibleCountMatrix[,j]) # same here if(!is.null(dim(countMatrix))){ - countMatrix = rowSums(countMatrix) - incompatibleCountMatrix = rowSums(metadata(quantData_i)$incompatibleCountMatrix[,j]) # same here + countMatrix <- rowSums(countMatrix) + incompatibleCountMatrix <- rowSums(metadata(quantData_i)$incompatibleCountMatrix[,j]) # same here } return(bambu.quantify(readClassDt = metadata(quantData_i)$readClassDt, countMatrix = countMatrix, incompatibleCountMatrix = data.table(GENEID.i = as.numeric(rownames(metadata(quantData_i)$incompatibleCountMatrix)), counts = incompatibleCountMatrix), @@ -285,26 +309,26 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, end.ptm <- proc.time() message("Total Time ", round((end.ptm - start.ptm)[3] / 60, 3), " mins.") if(!is.null(clusters)){ - ColNames = c(ColNames, names(iter)) + ColNames <- c(ColNames, names(iter)) } else{ - ColNames = c(ColNames, colnames(quantData_i)) + ColNames <- c(ColNames, colnames(quantData_i)) } - countsSeCompressed.all = c(countsSeCompressed.all, countsSeCompressed) + countsSeCompressed.all <- c(countsSeCompressed.all, countsSeCompressed) } - countsSeCompressed.all$colnames = ColNames + countsSeCompressed.all$colnames <- ColNames countsSe <- combineCountSes(countsSeCompressed.all, annotations) if(returnDistTable){ distTables = list() for(i in seq_along(quantData)){ - distTables[[i]] = metadata(quantData[[i]])$distTable + distTables[[i]] <- metadata(quantData[[i]])$distTable } - metadata(countsSe)$distTables = distTables + metadata(countsSe)$distTables <- distTables } #metadata(countsSe)$warnings = warnings - ColData = generateColData(colnames(countsSe), clusters, demultiplexed, spatial) - colData(countsSe) = ColData - colnames(countsSe) = ColData[,1] + ColData <- generateColData(colnames(countsSe), clusters, demultiplexed, spatial) + colData(countsSe) <- ColData + colnames(countsSe) <- ColData[,1] return(countsSe) } } From c66f216ed1287b40e29a6fb2705ce999a6fddc88 Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Tue, 21 Jan 2025 16:57:34 +0800 Subject: [PATCH 177/189] allow reads be NULL when quantData is provided for quant mode only --- R/bambu.R | 127 +++++++++++++++++++------------------ R/bambu_utilityFunctions.R | 40 +++++++----- 2 files changed, 92 insertions(+), 75 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index c36f5bb8..13f2f3c0 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -175,7 +175,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, annotations <- checkInputs(annotations, reads, readClass.outputDir = rcOutDir, genomeSequence = genome, discovery = discovery, - sampleNames = sampleNames, spatial = spatial) + sampleNames = sampleNames, spatial = spatial,quantData = quantData) } isoreParameters <- setIsoreParameters(isoreParameters = opt.discovery) #below line is to be compatible with earlier version of running bambu @@ -183,73 +183,80 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, emParameters <- setEmParameters(emParameters = opt.em) bpParameters <- setBiocParallelParameters(reads, ncore, verbose, demultiplexed) - - rm.readClassSe <- FALSE - readClassList <- reads - isRDSs <- all(sapply(reads, class)=="RangedSummarizedExperiment") - isBamFiles <- !isRDSs - warnings <- NULL - if(!isRDSs) - isBamFiles <- ifelse(!is(reads, "BamFileList"), - all(grepl(".bam$", reads)), FALSE) - if (isBamFiles | is(reads, "BamFileList")) { - if (length(reads) > 10 & (is.null(rcOutDir))) { - rcOutDir <- tempdir() #>=10 samples, save to temp folder - message("There are more than 10 samples, read class files + # only when reads is not NULL, this proceed, otherwise, it will jump to quant step + if(!is.null(reads)){ + rm.readClassSe <- FALSE + readClassList <- reads + isRDSs <- all(sapply(reads, class)=="RangedSummarizedExperiment") + isBamFiles <- !isRDSs + warnings <- NULL + if(!isRDSs) + isBamFiles <- ifelse(!is(reads, "BamFileList"), + all(grepl(".bam$", reads)), FALSE) + if (isBamFiles | is(reads, "BamFileList")) { + if (length(reads) > 10 & (is.null(rcOutDir))) { + rcOutDir <- tempdir() #>=10 samples, save to temp folder + message("There are more than 10 samples, read class files will be temporarily saved to ", rcOutDir, - " for more efficient processing") - rm.readClassSe <- TRUE # remove temporary read class files + " for more efficient processing") + rm.readClassSe <- TRUE # remove temporary read class files + } + message("--- Start generating read class files ---") + readClassList <- bambu.processReads(reads, annotations, + genomeSequence = genome, + readClass.outputDir = rcOutDir, yieldSize = yieldSize, + bpParameters = bpParameters, stranded = stranded, verbose = verbose, + isoreParameters = isoreParameters, trackReads = trackReads, + fusionMode = fusionMode, + processByChromosome = processByChromosome, processByBam = processByBam, + demultiplexed = demultiplexed, + sampleNames = sampleNames, cleanReads = cleanReads, + dedupUMI = dedupUMI,barcodesToFilter = barcodesToFilter) } - message("--- Start generating read class files ---") - readClassList <- bambu.processReads(reads, annotations, - genomeSequence = genome, - readClass.outputDir = rcOutDir, yieldSize = yieldSize, - bpParameters = bpParameters, stranded = stranded, verbose = verbose, - isoreParameters = isoreParameters, trackReads = trackReads, - fusionMode = fusionMode, - processByChromosome = processByChromosome, processByBam = processByBam, - demultiplexed = demultiplexed, - sampleNames = sampleNames, cleanReads = cleanReads, - dedupUMI = dedupUMI,barcodesToFilter = barcodesToFilter) - } - - #warnings = handleWarnings(readClassList, verbose) - if (!discovery & !assignDist & !quant) return(readClassList) - if (discovery) { - message("--- Start extending annotations ---") - extendedAnnotations <- bambu.extendAnnotations(readClassList, annotations, NDR, - isoreParameters, stranded, bpParameters, fusionMode, verbose) - metadata(extendedAnnotations)$warnings = warnings - #### cluster based transcript discovery - if(!is.null(clusters)){ - annotations.clusters <- isore.extendAnnotations.clusters(readClassList, - annotations, clusters, NDR, - isoreParameters, stranded, bpParameters, fusionMode, verbose = FALSE) - metadata(extendedAnnotations)$clusters <- annotations.clusters + #warnings = handleWarnings(readClassList, verbose) + if (!discovery & !assignDist & !quant) return(readClassList) + if (discovery) { + message("--- Start extending annotations ---") + extendedAnnotations <- bambu.extendAnnotations(readClassList, annotations, NDR, + isoreParameters, stranded, bpParameters, fusionMode, verbose) + metadata(extendedAnnotations)$warnings = warnings + + #### cluster based transcript discovery + if(!is.null(clusters)){ + annotations.clusters <- isore.extendAnnotations.clusters(readClassList, + annotations, clusters, NDR, + isoreParameters, stranded, bpParameters, fusionMode, verbose = FALSE) + metadata(extendedAnnotations)$clusters <- annotations.clusters + } + annotations <- extendedAnnotations + + if (!quant & !assignDist) return(annotations) + } + if(assignDist){ + message("--- Start calculating equivilance classes ---") + quantData <- bplapply(readClassList, + FUN = assignReadClasstoTranscripts, + annotations = annotations, + isoreParameters = isoreParameters, + verbose = verbose, + demultiplexed = demultiplexed, + spatial = spatial, + returnDistTable = returnDistTable, + trackReads = trackReads, + BPPARAM = bpParameters) + if (!quant) return(quantData) } - annotations <- extendedAnnotations - - if (!quant & !assignDist) return(annotations) - } - - if(assignDist){ - message("--- Start calculating equivilance classes ---") - quantData <- bplapply(readClassList, - FUN = assignReadClasstoTranscripts, - annotations = annotations, - isoreParameters = isoreParameters, - verbose = verbose, - demultiplexed = demultiplexed, - spatial = spatial, - returnDistTable = returnDistTable, - trackReads = trackReads, - BPPARAM = bpParameters) - if (!quant) return(quantData) } + + if (quant) { message("--- Start isoform EM quantification ---") + # the step below is a bit confusing but it seems to be the only way + # if discovery == TRUE, extendAnnotations happen already + # if users want discovery at this step, assign a desired value for NDR with discovery being FALSE + # here also reads need to be not file or bam file or rc file if(!is.null(NDR) & !discovery) annotations <- setNDR(annotations, NDR, prefix = isoreParameters$prefix, diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index 7c7d1bcd..50eae74f 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -112,25 +112,35 @@ checkInputs <- function(annotations, reads, readClass.outputDir, genomeSequence, if (!dir.exists(readClass.outputDir)) stop("output folder does not exist") } - - if (is(reads, "BamFileList")){ - if(is.null(genomeSequence)){ - stop("A genome must be provided when running bambu from bam files") - } - } else{ - # ===# Check whether provided read files are all in the same format (.bam or .rds) #===# - isRDSs = all(sapply(reads, class)=="RangedSummarizedExperiment") - if(!isRDSs){ - if (!all(grepl(".bam$", reads)) & !all(grepl(".rds$", reads))) - stop("Reads should either be: a vector of paths to .bam files, ", - "a vector of paths to Bambu RCfile .rds files, ", - "or a list of loaded Bambu RCfiles") - # if bam files are loaded in check that a genome is provided - if (all(grepl(".bam$", reads)) & is.null(genomeSequence)){ + if(!is.null(reads)){ + if (is(reads, "BamFileList")){ + if(is.null(genomeSequence)){ stop("A genome must be provided when running bambu from bam files") } + } else{ + # ===# Check whether provided read files are all in the same format (.bam or .rds) #===# + isRDSs <- all(sapply(reads, class)=="RangedSummarizedExperiment") + # there is a bug here, when reads is NULL, isRDSs == TRUE + if(!isRDSs){ + if (!all(grepl(".bam$", reads)) & !all(grepl(".rds$", reads))) + stop("Reads should either be: a vector of paths to .bam files, ", + "a vector of paths to Bambu RCfile .rds files, ", + "or a list of loaded Bambu RCfiles") + # if bam files are loaded in check that a genome is provided + if (all(grepl(".bam$", reads)) & is.null(genomeSequence)){ + stop("A genome must be provided when running bambu from bam files") + } + } } + }else if(is.null(quantData)){ + stop("Please provide either reads or quantData!", + "Reads should either be: a vector of paths to .bam files, ", + "a vector of paths to Bambu RCfile .rds files, ", + "or a list of loaded Bambu RCfiles. ", + "quantData should be output from bambu with ", + "assignDist = TRUE and quant = FALSE") } + ## check genomeSequence can't be FaFile in Windows as faFile will be dealt ## strangely in windows system if (.Platform$OS.type == "windows") { From b2be43361829fc81230f0464d766740c32b636ba Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Tue, 21 Jan 2025 17:01:11 +0800 Subject: [PATCH 178/189] fix typo --- R/bambu_utilityFunctions.R | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index 50eae74f..03f92434 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -75,7 +75,8 @@ updateParameters <- function(Parameters, Parameters.default) { #' @param readClass.outputDir path to readClass output directory #' @importFrom methods is #' @noRd -checkInputs <- function(annotations, reads, readClass.outputDir, genomeSequence, discovery, sampleNames, spatial){ +checkInputs <- function(annotations, reads, readClass.outputDir, genomeSequence, + discovery, sampleNames, spatial, quantData){ # ===# Check annotation inputs #===# if (!is.null(annotations)) { if (is(annotations, "CompressedGRangesList")) { From e2e300a5f6a5e8bc209574e90436aad44d092cc9 Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Wed, 22 Jan 2025 15:20:16 +0800 Subject: [PATCH 179/189] update documentation --- R/bambu.R | 10 ++-------- README.md | 31 +++++++++++++++++-------------- 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 13f2f3c0..536354c3 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -142,7 +142,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, fusionMode = FALSE, verbose = FALSE, demultiplexed = FALSE, spatial = NULL, quantData = NULL, sampleNames = NULL, cleanReads = FALSE, dedupUMI = FALSE, barcodesToFilter = NULL, clusters = NULL, processByChromosome = FALSE, processByBam = TRUE) { - message(paste0("Running Bambu-v", "3.3.0")) + message(paste0("Running Bambu-v", "3.9.0")) if(!is.null(mode)){ if(mode == "bulk"){ processByChromosome <- FALSE @@ -249,15 +249,9 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, } } - - if (quant) { message("--- Start isoform EM quantification ---") - # the step below is a bit confusing but it seems to be the only way - # if discovery == TRUE, extendAnnotations happen already - # if users want discovery at this step, assign a desired value for NDR with discovery being FALSE - # here also reads need to be not file or bam file or rc file - if(!is.null(NDR) & !discovery) + if(!is.null(NDR) & !discovery)# this step is used when reset NDR is needed annotations <- setNDR(annotations, NDR, prefix = isoreParameters$prefix, baselineFDR = isoreParameters[["baselineFDR"]], diff --git a/README.md b/README.md index 956700f7..6e710ec6 100755 --- a/README.md +++ b/README.md @@ -365,12 +365,14 @@ rowData(se[[1]]) |chr.rc|The chromosome name the read class is found on| |strand.rc|The strand of the read class| |startSD|The standard deviation of the aligned genomic start positions of all reads assigned to the read class| +|endSD|The standard deviation of the aligned genomic end positions of all reads assigned to the read class| |readCount.posStrand|The number of reads assigned to this read class that aligned to the positive strand| |intronStarts|A comma separated character vector of intron start coordinates| |intronEnds|A comma separated character vector of intron end coordinates| |confidenceType|Category of confidence:
    **highConfidenceJunctionReads** - the read class contain no low confidence junctions
    **lowConfidenceJunctionReads** - the read class contains low confidence junctions
    **unsplicedWithin** - single exon read class that is within the exon boundaries of an annotation
    **unsplicedNew** - single exon read class that does not fully overlap with annotated exons| |readCount|The number of reads assigned to this read class| -|readId *only present when trackReads = TRUE|An integer list of bambu internal read ids that belong to the read class. (See the metadata of the object for full read names)| +|readIds|An integer list of bambu internal read ids that belong to the read class. (See the metadata of the object for full read names)| +|sampleIds|An integer list of bambu internal sample ids based on barcodes.| |GENEID|The gene ID the transcript is associated with| |novelGene|A logical that is true if the read class belongs to a novel gene (does not overlap with an annotated gene loci)| |numExons|The number of exons the read class has| @@ -382,8 +384,8 @@ rowData(se[[1]]) |numAend|An integer counting the number of A nucleotides found within a 20bp window centered on the read class genomic end position| |numTstart|An integer counting the number of T nucleotides found within a 20bp window centered on the read class genomic start position| |numTend|An integer counting the number of T nucleotides found within a 20bp window centered on the read class genomic end position| -|txScore|This is the TPS generated by the sample trained model| |txScore.noFit|This is the TPS generated by the pretrained model| +|txScore|This is the TPS generated by the sample trained model| ### Tracking read-to-transcript assignment @@ -476,9 +478,9 @@ If you want to run Bambu-Clump for single-cell or spatial analysis stand alone a #### Read Class Construction: -**reads**: provided bam files must have barcodes in the read name or in the BC tag. Alternatively a csv file can be provided to demultiplexed mapping the read names to barcodes. For exact requirements see https://github.com/GoekeLab/bambu-singlecell-spatial.
    +**reads**: provided bam files should have barcodes in the read name or in the BC tag ( and UG tag for UMI identifiers). In the case where both tags and read names contain barcode information, tags will be used a prior. If not, a regular delimited headerless file that contain the demultiplexing information for each read should be provided to demultiplexed argument below. For exact requirements see https://github.com/GoekeLab/bambu-singlecell-spatial.
    -**demultiplexed**: must be set to TRUE (or be a barcode map). This will cause bambu to look for barcodes and seperate reads by barcode rather than sample.
    +**demultiplexed**: should be either set to TRUE or the path to barcode mapping file. Otherwise, bambu will not look for barcodes and seperate reads by barcode rather than sample.
    Optional: @@ -486,12 +488,12 @@ Optional: **sampleNames**: A vector of characters assigning names to each sample in the reads argument. By default the sample names are taken from the file names and appended to the barcodes in order to differentiate them. If your sample names are the same across multiple files, but matching barcodes between the samples should be counted seperately, provide them with different sample names using this argument. Similiarly if your samples have different names, but overlapping barcodes should be counted together, give them the same sample name with this argument.
    -**dedupUMI**: A logical TRUE/FALSE.
    +**dedupUMI**: A logical TRUE/FALSE.
    **barcodesToFilter**: A string vector indicating barcodes to be filtered out.
    ```rscript -readClassFile = bambu(reads = samples, annotations = annotations, genome = "$genome", ncore = $params.ncore, discovery = FALSE, quant = FALSE, demultiplexed = barcode_maps, verbose = TRUE, assignDist = FALSE, lowMemory = as.logical("$params.lowMemory"), yieldSize = 10000000, sampleNames = ids, cleanReads = as.logical($cleanReads), dedupUMI = as.logical($deduplicateUMIs)) +readClassFile = bambu(reads = samples, annotations = annotations, genome = fa.file, ncore = 1, discovery = FALSE, quant = FALSE, demultiplexed = barcode_maps, verbose = TRUE, assignDist = FALSE, lowMemory = as.logical("$params.lowMemory"), yieldSize = 10000000, sampleNames = ids, cleanReads = as.logical($cleanReads), dedupUMI = as.logical($deduplicateUMIs)) ``` #### Transcript Discovery: @@ -499,7 +501,7 @@ readClassFile = bambu(reads = samples, annotations = annotations, genome = "$gen Transript discovery can be run as usual as typically bulk-level discovery is suitable. However cluster-level transcript discovery can be preformed using the clusters argument which can be redone done after clustering. ```rscript -extendedAnno = bambu(reads = readClassFile, annotations = annotations, genome = "$genome", ncore = $params.ncore, discovery = TRUE, quant = FALSE, demultiplexed = TRUE, verbose = FALSE, assignDist = FALSE) +extendedAnno = bambu(reads = readClassFile, annotations = annotations, genome = fa.file, ncore = 1, discovery = TRUE, quant = FALSE, demultiplexed = TRUE, verbose = FALSE, assignDist = FALSE) ``` #### Read Class Assignment: @@ -509,7 +511,7 @@ This step was previously performed together with the quantification, but can be **spatial**: This should be a path to your barcode whitelist that also contians the x and y coordinates as extra columns. ```rscript -quantData = bambu(reads = readClassFile, annotations = extendedAnno, genome = "$genome", ncore = $params.ncore, discovery = FALSE, quant = FALSE, demultiplexed = TRUE, verbose = FALSE, opt.em = list(degradationBias = FALSE), assignDist = TRUE, spatial = spatial) +quantData = bambu(reads = readClassFile, annotations = extendedAnno, genome = fa.file, ncore = 1, discovery = FALSE, quant = FALSE, demultiplexed = TRUE, verbose = FALSE, opt.em = list(degradationBias = FALSE), assignDist = TRUE, spatial = spatial) ``` #### EM quantification: @@ -641,14 +643,15 @@ rowData(se) |---|---| |TXNAME|The transcript name for the transcript. Will use either the transcript name from the provided annotations or tx.X if it is a novel transcript where X is a unique integer.| |GENEID|The gene name for the transcript. Will use either the gene name from the provided annotations or gene.X if it is a novel transcript where X is a unique integer.| -|eqClass|A character vector with the transcript names of all the equivalent transcripts (those which have this transcripts contiguous exon junctions)| -|txId|A bambu specific transcript id used for indexing purposes -|eqClassById|A integer list with the transcript ids of all equivalent transcripts +|NDR|The NDR score calculated for the transcript| +|novelGene|A logical variable that is true if transcript model is from a novel gene (does not overlap with an annotated gene loci)| +|novelTranscript|A logical variable that is true if transcript model is novel (passing NDR threshold)| |txClassDescription|A concatenated string containing the classes the transcript falls under:
    **annotation** - Transcript matches an annotation transcript
    **allNew** - All the intron-junctions are novel
    **newFirstJunction** - the first junction is novel and at least one other junction matches an annotated transcript
    **newLastJunction** - the last junction is novel and at least one other junction matches an annotated transcript
    **newJunction** - an internal junction is novel and at least one other internal junction matches an annotated transcript
    **newWithin** - A novel transcript with matching junctions but is not a subset of an annotation
    **unsplicedNew** - A single exon transcript that doesn’t completely overlap with annotations
    **compatible** - Is a subset of an annotated transcript
    **newFirstExon** - The first exon is novel
    **newLastExon** - The last exon is novel| |readCount|The number of full length reads associated with this transcript (filtered by min.readCount)| -|NDR|The NDR score calculated for the transcript| |relReadCount|The proportion of reads this transcript has relative to all reads assigned to its gene| |relSubsetCount|The proportion of reads this transcript has relative to all reads that either fully or partially match this transcript| +|txId|A bambu specific transcript id used for indexing purposes +|eqClassById|A integer list with the transcript ids of all equivalent transcripts |maxTxScore|The maximum model score across samples from the sample-trained model. Used internally by Bambu to calculate NDR scores| |maxTxScore.noFit|The maximum model score across samples from the pretrained model. Used internally by Bambu to recommend NDR thresholds| @@ -676,9 +679,9 @@ metadata(rowRanges(se))$warnings ### Release History -**bambu v3.3.0** +**bambu v3.9.0** -Release date: 2024-October-28 +Release date: 2025-xxx-xx - Subset transcripts and those above the NDR threshold are placed into the metadata of the annotations in $subsetTranscripts and $lowConfidenceTranscripts respectively (when filtered out by default). - adds the setNDR function From 7e88470ae417deedd7a36639ab7dbbe73cbed354 Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Wed, 22 Jan 2025 15:20:45 +0800 Subject: [PATCH 180/189] add comment message to understand codes better --- R/bambu-extendAnnotations-utilityCombine.R | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/R/bambu-extendAnnotations-utilityCombine.R b/R/bambu-extendAnnotations-utilityCombine.R index 48d11844..2836c2eb 100644 --- a/R/bambu-extendAnnotations-utilityCombine.R +++ b/R/bambu-extendAnnotations-utilityCombine.R @@ -19,7 +19,10 @@ isore.combineTranscriptCandidates <- function(readClassList, min.readCount, min.readFractionByGene, min.txScore.multiExon, min.txScore.singleExon, verbose) %>% data.table() combinedSplicedTranscripts[,confidenceType := "highConfidenceJunctionReads"] - if (min.txScore.singleExon == 1) {return(combinedSplicedTranscripts)} + # when single exon min score is 1, skip unspliced transcripts combination + # by right, estimated txScore will not reach 1 + if (min.txScore.singleExon == 1) + return(combinedSplicedTranscripts) combinedUnsplicedTranscripts <- combineUnsplicedTranscriptModels(readClassList, bpParameters, stranded, min.readCount, min.readFractionByGene, @@ -36,11 +39,11 @@ isore.combineTranscriptCandidates <- function(readClassList, combineSplicedTranscriptModels <- function(readClassList, bpParameters, min.readCount, min.readFractionByGene, min.txScore.multiExon, min.txScore.singleExon, verbose){ - bpParameters$progressbar = FALSE + bpParameters$progressbar <- FALSE options(scipen = 999) #maintain numeric basepair locations not sci.notfi. start.ptm <- proc.time() n_sample <- length(readClassList) - nGroups = max(ceiling(n_sample/10),min(bpworkers(bpParameters), + nGroups <- max(ceiling(n_sample/10),min(bpworkers(bpParameters), round(n_sample/2))) indexList <- sample(rep(seq_len(nGroups), length.out=n_sample)) indexList <- splitAsList(seq_len(n_sample), indexList) @@ -135,7 +138,7 @@ combineFeatureTibble <- function(combinedFeatureTibble, maxTxScore.noFit, NSampleReadCount, NSampleReadProp,NSampleTxScore, starts_with('start'), starts_with('end'), starts_with('readCount')) } else { - combinedTable = full_join(combinedFeatureTibble, + combinedTable <- full_join(combinedFeatureTibble, featureTibbleSummarised, by = c('intronStarts', 'intronEnds', 'chr', 'strand'), suffix=c('.combined','.new')) %>% mutate(NSampleReadCount=pmax0NA(NSampleReadCount.combined) + @@ -215,7 +218,7 @@ combineUnsplicedTranscriptModels <- min.readFractionByGene, min.txScore.multiExon, min.txScore.singleExon, verbose){ start.ptm <- proc.time() - bpParameters$progressbar = FALSE + bpParameters$progressbar <- FALSE newUnsplicedSeList <- bplapply(seq_along(readClassList), function(sample_id) extractNewUnsplicedRanges(readClassSe = @@ -292,7 +295,7 @@ reduceUnsplicedRanges <- function(rangesList, stranded){ makeUnsplicedTibble <- function(combinedNewUnsplicedSe,newUnsplicedSeList, colDataNames,min.readCount, min.readFractionByGene, min.txScore.multiExon, min.txScore.singleExon, bpParameters){ - bpParameters$progressbar = FALSE + bpParameters$progressbar <- FALSE newUnsplicedTibble <- as_tibble(combinedNewUnsplicedSe) %>% rename(chr = seqnames) %>% select(chr, start, end, strand, row_id) %>% separate_rows(row_id, sep = "\\+") From 8bc682c3d97e6ec6c2c9fbad9c2ba86ac7ed4391 Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Wed, 22 Jan 2025 15:34:57 +0800 Subject: [PATCH 181/189] update code style --- R/bambu-extendAnnotations-utilityExtend.R | 196 +++++++++++----------- 1 file changed, 100 insertions(+), 96 deletions(-) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index 338ea822..8d20ba7c 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -23,7 +23,9 @@ isore.extendAnnotations <- function(combinedTranscripts, annotationGrangesList, rowDataSplicedTibble, annotationGrangesList, min.exonDistance, min.primarySecondaryDist, min.primarySecondaryDistStartEnd, verbose) - } else{ rowDataFilteredSpliced = NULL} + } else{ + rowDataFilteredSpliced <- NULL + } rowDataFilteredUnspliced <- rowDataTibble[which(confidenceTypeVec == "unsplicedNew"),] SEnRng <- addNewUnsplicedReadClasses(rowDataFilteredUnspliced, rowDataFilteredSpliced, transcriptRanges$exons, @@ -98,19 +100,19 @@ filterTranscriptsByAnnotation <- function(rowDataCombined, annotationGrangesList rowDataCombined[!notCompatibleIds,], exonRangesCombined[!notCompatibleIds]) rowDataCombined$maxTxScore[grepl("compatible", rowDataCombined$readClassType) & - rowDataCombined$readClassType != "equal:compatible"]=-1 + rowDataCombined$readClassType != "equal:compatible"] <- -1 rowDataCombined$maxTxScore.noFit[grepl("compatible", rowDataCombined$readClassType) & - rowDataCombined$readClassType != "equal:compatible"]=-1 + rowDataCombined$readClassType != "equal:compatible"] <- -1 } #(2) remove transcripts below NDR threshold/identical junctions to annotations - rowDataCombined = calculateNDROnTranscripts(rowDataCombined, + rowDataCombined <- calculateNDROnTranscripts(rowDataCombined, useTxScore = length(annotationGrangesList)==0) if(length(annotationGrangesList)>0){ #only recommend an NDR if its possible to calculate an NDR - NDR = recommendNDR(rowDataCombined, baselineFDR, NDR, defaultModels, verbose) - } else { - if(is.null(NDR)) NDR = 0.5 + NDR <- recommendNDR(rowDataCombined, baselineFDR, NDR, defaultModels, verbose) + } else if(is.null(NDR)) { + NDR <- 0.5 } - filterSet = (rowDataCombined$NDR <= NDR | rowDataCombined$readClassType == "equal:compatible") + filterSet <- (rowDataCombined$NDR <= NDR | rowDataCombined$readClassType == "equal:compatible") lowConfidenceTranscripts <- combindRowDataWithRanges( rowDataCombined[!filterSet,], exonRangesCombined[!filterSet]) @@ -156,21 +158,21 @@ filterTranscriptsByAnnotation <- function(rowDataCombined, annotationGrangesList #' @noRd recommendNDR <- function(combinedTranscripts, baselineFDR = 0.1, NDR = NULL, defaultModels = defaultModels, verbose = FALSE){ if(verbose) message("-- Predicting annotation completeness to determine NDR threshold --") - combinedTranscripts = combinedTranscripts[combinedTranscripts$maxTxScore.noFit >=0, ] #ignore filtered out read classes - equal = combinedTranscripts$readClassType == "equal:compatible" - equal[is.na(equal)] = FALSE + combinedTranscripts <- combinedTranscripts[combinedTranscripts$maxTxScore.noFit >=0, ] #ignore filtered out read classes + equal <- combinedTranscripts$readClassType == "equal:compatible" + equal[is.na(equal)] <- FALSE #add envirnment so poly() works attr(defaultModels$lmNDR[["terms"]], ".Environment") <- new.env(parent = parent.env(globalenv())) - baseline = predict(defaultModels$lmNDR, newdata=data.frame(NDR=baselineFDR)) - attr(defaultModels$lmNDR[["terms"]], ".Environment") = c() - - score = combinedTranscripts$maxTxScore.noFit - score[is.na(score)] = 0 - NDRscores = calculateNDR(score, equal) - NDR.rec = predict(lm(NDRscores~poly(score,3,raw=TRUE)), newdata=data.frame(score=baseline)) - NDR.rec = round(NDR.rec,3) - if(NDR.rec > 1){NDR.rec = 0.999} - if (NDR.rec < 0) {NDR.rec = 0} + baseline <- predict(defaultModels$lmNDR, newdata=data.frame(NDR=baselineFDR)) + attr(defaultModels$lmNDR[["terms"]], ".Environment") <- c() + + score <- combinedTranscripts$maxTxScore.noFit + score[is.na(score)] <- 0 + NDRscores <- calculateNDR(score, equal) + NDR.rec <- predict(lm(NDRscores~poly(score,3,raw=TRUE)), newdata=data.frame(score=baseline)) + NDR.rec <- round(NDR.rec,3) + if(NDR.rec > 1) NDR.rec <- 0.999 + if (NDR.rec < 0) NDR.rec <- 0 if(verbose) message("Recommended NDR for baseline FDR of ", baselineFDR, " = ", NDR.rec) if(NDR.rec > 0.5){ message("A high NDR threshold is being recommended by Bambu indicating high levels of novel transcripts, ", @@ -181,33 +183,29 @@ recommendNDR <- function(combinedTranscripts, baselineFDR = 0.1, NDR = NULL, def } #if users are using an NDR let them know if the recommended NDR is different - if(is.null(NDR)) - { - NDR = NDR.rec + if(is.null(NDR)) { + NDR <- NDR.rec message("Using a novel discovery rate (NDR) of: ", NDR) - } - else{ - if(abs(NDR.rec-NDR)>=0.1){ + } else if(abs(NDR.rec-NDR)>=0.1){ message(paste0("For your combination of sample and reference annotations we recommend an NDR of ", NDR.rec, ". You are currently using an NDR threshold of ", NDR, ". A higher NDR is suited for samples where the reference annotations are poor and more novel transcripts are expected,", "whereas a lower NDR is suited for samples with already high quality annotations")) - } } return(NDR) } -recommendNDR.onAnnotations = function(annotations, prefix = "Bambu", baselineFDR = 0.1, defaultModels2 = defaultModels2){ - mcols = mcols(annotations)[!is.na(mcols(annotations)$maxTxScore),] - equal = !grepl(prefix, mcols$TXNAME) +recommendNDR.onAnnotations <- function(annotations, prefix = "Bambu", baselineFDR = 0.1, defaultModels2 = defaultModels2){ + mcols <- mcols(annotations)[!is.na(mcols(annotations)$maxTxScore),] + equal <- !grepl(prefix, mcols$TXNAME) #add envirnment so poly() works attr(defaultModels2$lmNDR[["terms"]], ".Environment") <- new.env(parent = parent.env(globalenv())) - baseline = predict(defaultModels2$lmNDR, newdata=data.frame(NDR=baselineFDR)) - attr(defaultModels2$lmNDR[["terms"]], ".Environment") = c() - score = mcols$maxTxScore.noFit - NDRscores = calculateNDR(score, equal) - NDR.rec = predict(lm(NDRscores~poly(score,3,raw=TRUE)), newdata=data.frame(score=baseline)) - NDR.rec = round(NDR.rec,3) + baseline <- predict(defaultModels2$lmNDR, newdata=data.frame(NDR=baselineFDR)) + attr(defaultModels2$lmNDR[["terms"]], ".Environment") <- c() + score <- mcols$maxTxScore.noFit + NDRscores <- calculateNDR(score, equal) + NDR.rec <- predict(lm(NDRscores~poly(score,3,raw=TRUE)), newdata=data.frame(score=baseline)) + NDR.rec <- round(NDR.rec,3) return(NDR.rec) } @@ -216,25 +214,27 @@ recommendNDR.onAnnotations = function(annotations, prefix = "Bambu", baselineFDR #' @noRd calculateNDROnTranscripts <- function(combinedTranscripts, useTxScore = FALSE){ # calculate and filter by NDR - equal = combinedTranscripts$readClassType == "equal:compatible" - equal[is.na(equal)] = FALSE + equal <- combinedTranscripts$readClassType == "equal:compatible" + equal[is.na(equal)] <- FALSE if(sum(equal, na.rm = TRUE)<50 | sum(!equal, na.rm = TRUE)<50 | useTxScore){ - combinedTranscripts$NDR = 1 - combinedTranscripts$maxTxScore + combinedTranscripts$NDR <- 1 - combinedTranscripts$maxTxScore if(!useTxScore) message("WARNING - Less than 50 TRUE or FALSE read classes ", "for NDR precision stabilization.") message("NDR will be approximated as: (1 - Transcript Model Prediction Score)") - } else combinedTranscripts$NDR = calculateNDR(combinedTranscripts$maxTxScore, equal) - combinedTranscripts$NDR[combinedTranscripts$maxTxScore==-1] = 1 + } else { + combinedTranscripts$NDR <- calculateNDR(combinedTranscripts$maxTxScore, equal) + } + combinedTranscripts$NDR[combinedTranscripts$maxTxScore==-1] <- 1 return(combinedTranscripts) } #' calculates the minimum NDR for each score #' @noRd -calculateNDR = function(score, labels){ - scoreOrder = order(score, decreasing = TRUE) - labels = labels[scoreOrder] - NDR = cumsum(!labels)/(seq_len(length(labels))) #calculate NDR - NDR = rev(cummin(rev(NDR))) #flatten NDR so its never higher than a lower ranked RC +calculateNDR <- function(score, labels){ + scoreOrder <- order(score, decreasing = TRUE) + labels <- labels[scoreOrder] + NDR <- cumsum(!labels)/(seq_len(length(labels))) #calculate NDR + NDR <- rev(cummin(rev(NDR))) #flatten NDR so its never higher than a lower ranked RC return(NDR[order(scoreOrder)]) #return to original order } @@ -245,8 +245,9 @@ calculateNDR = function(score, labels){ #' @noRd makeExonsIntronsSpliced <- function(transcriptsTibble,annotationSeqLevels){ if(all(is.na(transcriptsTibble$intronStarts))){ - intronsByReadClass = GRangesList()} - else { intronsByReadClass <- makeGRangesListFromFeatureFragments( + intronsByReadClass <- GRangesList() + } else { + intronsByReadClass <- makeGRangesListFromFeatureFragments( seqnames = transcriptsTibble$chr, fragmentStarts = transcriptsTibble$intronStarts, fragmentEnds = transcriptsTibble$intronEnds, @@ -686,7 +687,7 @@ combindRowDataWithRanges <- function(rowDataCombinedFiltered, exonRangesCombined #' @noRd combineWithAnnotations <- function(rowDataCombinedFiltered, extendedAnnotationRanges,annotationGrangesList, prefix){ - equalRanges = rowDataCombinedFiltered[!(rowDataCombinedFiltered$novelTranscript),] + equalRanges <- rowDataCombinedFiltered[!(rowDataCombinedFiltered$novelTranscript),] #remove extended ranges that are already present in annotation extendedAnnotationRanges <- extendedAnnotationRanges[rowDataCombinedFiltered$novelTranscript] annotationRangesToMerge <- annotationGrangesList @@ -700,12 +701,12 @@ combineWithAnnotations <- function(rowDataCombinedFiltered, mcols(annotationRangesToMerge)$maxTxScore.noFit <- NA mcols(extendedAnnotationRanges) <- mcols(extendedAnnotationRanges)[,colnames(mcols(extendedAnnotationRanges))] #copy over stats to annotations from read classes - mcols(annotationRangesToMerge[equalRanges$TXNAME])$NDR = equalRanges$NDR - mcols(annotationRangesToMerge[equalRanges$TXNAME])$maxTxScore = equalRanges$maxTxScore - mcols(annotationRangesToMerge[equalRanges$TXNAME])$readCount = equalRanges$readCount - mcols(annotationRangesToMerge[equalRanges$TXNAME])$relReadCount = equalRanges$relReadCount - mcols(annotationRangesToMerge[equalRanges$TXNAME])$maxTxScore = equalRanges$maxTxScore - mcols(annotationRangesToMerge[equalRanges$TXNAME])$maxTxScore.noFit = equalRanges$maxTxScore.noFit + mcols(annotationRangesToMerge[equalRanges$TXNAME])$NDR <- equalRanges$NDR + mcols(annotationRangesToMerge[equalRanges$TXNAME])$maxTxScore <- equalRanges$maxTxScore + mcols(annotationRangesToMerge[equalRanges$TXNAME])$readCount <- equalRanges$readCount + mcols(annotationRangesToMerge[equalRanges$TXNAME])$relReadCount <- equalRanges$relReadCount + mcols(annotationRangesToMerge[equalRanges$TXNAME])$maxTxScore <- equalRanges$maxTxScore + mcols(annotationRangesToMerge[equalRanges$TXNAME])$maxTxScore.noFit <- equalRanges$maxTxScore.noFit #mcols(annotationRangesToMerge[equalRanges$TXNAME])$relSubsetCount = equalRanges$relSubsetCount } if (length(extendedAnnotationRanges)) { @@ -717,7 +718,7 @@ combineWithAnnotations <- function(rowDataCombinedFiltered, }else{ extendedAnnotationRanges <- annotationRangesToMerge mcols(extendedAnnotationRanges)$txid <- seq_along(extendedAnnotationRanges) - mcols(extendedAnnotationRanges)$relReadCount = NA + mcols(extendedAnnotationRanges)$relReadCount <- NA #mcols(extendedAnnotationRanges)$relSubsetCount = NA } return(extendedAnnotationRanges) @@ -725,8 +726,8 @@ combineWithAnnotations <- function(rowDataCombinedFiltered, #' calculate relative subset read count after filtering (increase speed, subsets are not considered here)' #' @noRd -calculateRelSubsetCount = function(extendedAnnotationRanges, minEq, min.readFractionByEqClass){ - filter = !is.na(mcols(extendedAnnotationRanges)$readCount) +calculateRelSubsetCount <- function(extendedAnnotationRanges, minEq, min.readFractionByEqClass){ + filter <- !is.na(mcols(extendedAnnotationRanges)$readCount) mcols(extendedAnnotationRanges)$relSubsetCount <- NA mcols(extendedAnnotationRanges)$relSubsetCount[filter] <- mcols(extendedAnnotationRanges)$readCount[filter]/ @@ -834,7 +835,7 @@ addGeneIdsToReadClassTable <- function(readClassTable, distTable, #' @details #' @return extendedAnnotations with a new NDR threshold #' @export -setNDR = function(extendedAnnotations, NDR = NULL, includeRef = FALSE, prefix = 'Bambu', baselineFDR = 0.1, defaultModels2 = defaultModels){ +setNDR <- function(extendedAnnotations, NDR = NULL, includeRef = FALSE, prefix = 'Bambu', baselineFDR = 0.1, defaultModels2 = defaultModels){ #Check to see if the annotations/gtf are dervived from Bambu if(is.null(mcols(extendedAnnotations)$NDR)){ warning("Annotations were not extended by Bambu (or the wrong prefix was provided). NDR can not be set") @@ -846,76 +847,79 @@ setNDR = function(extendedAnnotations, NDR = NULL, includeRef = FALSE, prefix = #recommend an NDR (needed when users read in Bambu GTF) if(is.null(NDR)){ - tempAnno = c(extendedAnnotations, metadata(extendedAnnotations)$lowConfidenceTranscripts) - NDR = recommendNDR.onAnnotations(tempAnno, prefix = prefix, baselineFDR = baselineFDR, defaultModels2 = defaultModels2) + tempAnno <- c(extendedAnnotations, metadata(extendedAnnotations)$lowConfidenceTranscripts) + NDR <- recommendNDR.onAnnotations(tempAnno, prefix = prefix, baselineFDR = baselineFDR, defaultModels2 = defaultModels2) message("Recommending a novel discovery rate (NDR) of: ", NDR) } #If reference annotations should be filtered too (note that reference annotations with no read support arn't filtered) if(includeRef){ - toRemove = (!is.na(mcols(extendedAnnotations)$NDR) & mcols(extendedAnnotations)$NDR > NDR) - toAdd = !is.na(mcols(metadata(extendedAnnotations)$lowConfidenceTranscripts)$NDR) & + toRemove <- (!is.na(mcols(extendedAnnotations)$NDR) & mcols(extendedAnnotations)$NDR > NDR) + toAdd <- !is.na(mcols(metadata(extendedAnnotations)$lowConfidenceTranscripts)$NDR) & mcols(metadata(extendedAnnotations)$lowConfidenceTranscripts)$NDR <= NDR } else { - toRemove = (mcols(extendedAnnotations)$NDR > NDR & + toRemove <- (mcols(extendedAnnotations)$NDR > NDR & grepl(prefix, mcols(extendedAnnotations)$TXNAME)) - toAdd = (mcols(metadata(extendedAnnotations)$lowConfidenceTranscripts)$NDR <= NDR & + toAdd <- (mcols(metadata(extendedAnnotations)$lowConfidenceTranscripts)$NDR <= NDR & grepl(prefix, mcols(metadata(extendedAnnotations)$lowConfidenceTranscripts)$TXNAME)) } - temp = c(metadata(extendedAnnotations)$lowConfidenceTranscripts[!toAdd], extendedAnnotations[toRemove]) - extendedAnnotations = c(extendedAnnotations[!toRemove], metadata(extendedAnnotations)$lowConfidenceTranscripts[toAdd]) - metadata(extendedAnnotations)$lowConfidenceTranscripts = temp + temp <- c(metadata(extendedAnnotations)$lowConfidenceTranscripts[!toAdd], extendedAnnotations[toRemove]) + extendedAnnotations <- c(extendedAnnotations[!toRemove], metadata(extendedAnnotations)$lowConfidenceTranscripts[toAdd]) + metadata(extendedAnnotations)$lowConfidenceTranscripts <- temp mcols(extendedAnnotations)$txid <- seq_along(extendedAnnotations) minEqClasses <- getMinimumEqClassByTx(extendedAnnotations) mcols(extendedAnnotations)$eqClassById <- minEqClasses$eqClassById - metadata(extendedAnnotations)$NDRthreshold = NDR + metadata(extendedAnnotations)$NDRthreshold <- NDR return(extendedAnnotations) } + +#' Extend annotations by clusters (work in progress?) +#' @noRd isore.extendAnnotations.clusters <- function(readClassList, annotations, clusters, NDR, isoreParameters, stranded, bpParameters, fusionMode, verbose = FALSE){ message("--- Start extending annotations for clusters ---") #if clustering is a csv, create a list with the barcodes for each cluster #csv must have two cols with heading barcode, cluster if(!is.list(clusters)){ - clusters = read.csv(clusters) - clusters = clusters %>% group_by(cluster) %>% summarise(barcodes = list(barcode)) - clusters = clusters$cluster - clusters = clusters$barcodes - names(clusters) = clusters + clusters <- read.csv(clusters) + clusters <- clusters %>% group_by(cluster) %>% summarise(barcodes = list(barcode)) + clusters <- clusters$cluster + clusters <- clusters$barcodes + names(clusters) <- clusters } - annotations.clusters = list() - rcfs.clusters = list() - clusters.rc = splitReadClassFilesByRC(readClassList[[1]]) - txScores = c() + annotations.clusters <- list() + rcfs.clusters <- list() + clusters.rc <- splitReadClassFilesByRC(readClassList[[1]]) + txScores <- c() for(i in seq_along(clusters)){ print(names(clusters)[i]) ###TODO need to account for the sample name here which is added to the barcode - index = match(clusters[[i]],gsub('demultiplexed','',metadata(readClassList[[1]])$samples)) - index = index[!is.na(index)] + index <- match(clusters[[i]],gsub('demultiplexed','',metadata(readClassList[[1]])$samples)) + index <- index[!is.na(index)] print(length(index)) if(length(index)<20) next - rcf.counts = clusters.rc[,index] - rcf.filt = readClassList[[1]][rowSums(rcf.counts)>0,] - rowData(rcf.filt)$readCount = rowSums(rcf.counts)[rowSums(rcf.counts)>0] - countsTBL = calculateGeneProportion(counts=mcols(rcf.filt)$readCount, + rcf.counts <- clusters.rc[,index] + rcf.filt <- readClassList[[1]][rowSums(rcf.counts)>0,] + rowData(rcf.filt)$readCount <- rowSums(rcf.counts)[rowSums(rcf.counts)>0] + countsTBL <- calculateGeneProportion(counts=mcols(rcf.filt)$readCount, geneIds=mcols(rcf.filt)$GENEID) - rowData(rcf.filt)$geneReadProp = countsTBL$geneReadProp - rowData(rcf.filt)$geneReadCount = countsTBL$geneReadCount - rowData(rcf.filt)$startSD = 0 - rowData(rcf.filt)$endSD = 0 - rowData(rcf.filt)$readCount.posStrand = 0 - thresholdIndex = which(rowData(rcf.filt)$readCount>=isoreParameters$min.readCount) - model = trainBambu(rcf.filt, verbose = verbose, min.readCount = isoreParameters$min.readCount) - txScore = getTranscriptScore(rowData(rcf.filt)[thresholdIndex,], model, + rowData(rcf.filt)$geneReadProp <- countsTBL$geneReadProp + rowData(rcf.filt)$geneReadCount <- countsTBL$geneReadCount + rowData(rcf.filt)$startSD <- 0 + rowData(rcf.filt)$endSD <- 0 + rowData(rcf.filt)$readCount.posStrand <- 0 + thresholdIndex <- which(rowData(rcf.filt)$readCount>=isoreParameters$min.readCount) + model <- trainBambu(rcf.filt, verbose = verbose, min.readCount = isoreParameters$min.readCount) + txScore <- getTranscriptScore(rowData(rcf.filt)[thresholdIndex,], model, defaultModels) - rowData(rcf.filt)$txScore = rep(NA,nrow(rcf.filt)) - rowData(rcf.filt)$txScore[thresholdIndex] = txScore + rowData(rcf.filt)$txScore <- rep(NA,nrow(rcf.filt)) + rowData(rcf.filt)$txScore[thresholdIndex] <- txScore #txScores = cbind(txScores, rowData(rcf.filt)$txScore) - rcfs.clusters[[names(clusters)[i]]] = rcf.filt + rcfs.clusters[[names(clusters)[i]]] <- rcf.filt annotations.clusters[[names(clusters)[i]]] <- bambu.extendAnnotations(list(rcf.filt), annotations, NDR, isoreParameters, stranded, bpParameters, fusionMode, verbose) } From 3d645e112ce1208e2c145959998144329096584b Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Thu, 23 Jan 2025 11:03:35 +0800 Subject: [PATCH 182/189] fix bug when clusters is provided as CharacterList produced as recommended in readme --- R/bambu.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/bambu.R b/R/bambu.R index 536354c3..bc68727b 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -268,7 +268,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, #load in the barcode clustering from file if provided iter <- seq_len(ncol(metadata(quantData_i)$countMatrix)) # iter is integer if(!is.null(clusters)){ - if(!is.list(clusters)){ + if(class(clusters)!="CompressedCharacterList"){ # !is.list(clusters) is FALSE for CompressedCharacterList clusterMaps <- NULL for(j in seq_along(metadata(quantData_i)$sampleNames)){ #load in a file per sample name provided clusterMap <- fread(clusters[[j]], header = FALSE, @@ -289,7 +289,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, if(length(quantData)>1){ iter <- clusters[[i]] #lowMemory mode }else{ - iter <- do.call(c,clusters) + iter <- clusters#do.call(c,clusters) } } } From f25f2d3c94446cf32f18a28dca85b10155010805 Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Thu, 23 Jan 2025 11:06:21 +0800 Subject: [PATCH 183/189] fix bug for reading in spatial files --- R/bambu_utilityFunctions.R | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/R/bambu_utilityFunctions.R b/R/bambu_utilityFunctions.R index 03f92434..bc148c71 100644 --- a/R/bambu_utilityFunctions.R +++ b/R/bambu_utilityFunctions.R @@ -304,8 +304,14 @@ generateColData <- function(sampleNames, clusters, demultiplexed, spatial){ ColData$x_coordinate <- NA ColData$y_coordinate <- NA if(length(spatial)==1){ - bc_coords <- DataFrame(read.table(gzfile(spatial), - col.names = c("Barcode", "x_coordinate", "y_coordinate"))) + # the following line takes a regular delimited file as input + # it can either has header or without header + # it can also be compressed + bc_coords <- fread(spatial, + col.names = c("Barcode", "x_coordinate", "y_coordinate"), + data.table = FALSE) + # DataFrame(read.table(gzfile(spatial), + # col.names = c("Barcode", "x_coordinate", "y_coordinate"))) bcMatch <- match(ColData$Barcode, bc_coords$Barcode) ColData$x_coordinate <- bc_coords$x_coordinate[bcMatch] ColData$y_coordinate <- bc_coords$y_coordinate[bcMatch] @@ -313,8 +319,11 @@ generateColData <- function(sampleNames, clusters, demultiplexed, spatial){ spatial.unique <- unique(spatial) for(whitelist in spatial.unique){ i <- which(spatial.unique==whitelist) - bc_coords <- DataFrame(read.table(gzfile(whitelist), - col.names = c("Barcode", "x_coordinate", "y_coordinate"))) + bc_coords <- fread(whitelist, + col.names = c("Barcode", "x_coordinate", "y_coordinate"), + data.table = FALSE) + # DataFrame(read.table(gzfile(whitelist), + # col.names = c("Barcode", "x_coordinate", "y_coordinate"))) bcSampleIndex <- ColData$sampleName %in% sampleNames[i] bcMatch <- match(ColData$Barcode[bcSampleIndex], bc_coords$Barcode) ColData$x_coordinate[bcSampleIndex] <- bc_coords$x_coordinate[bcMatch] From 55a445ba94ac89200a8eb5510199289cbb8438d7 Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Thu, 23 Jan 2025 11:08:04 +0800 Subject: [PATCH 184/189] fix the problem of not using unspliced SEs in default settings when min.txScore.singleExon == 1 --- R/bambu-extendAnnotations-utilityCombine.R | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/R/bambu-extendAnnotations-utilityCombine.R b/R/bambu-extendAnnotations-utilityCombine.R index 2836c2eb..4a644451 100644 --- a/R/bambu-extendAnnotations-utilityCombine.R +++ b/R/bambu-extendAnnotations-utilityCombine.R @@ -19,9 +19,9 @@ isore.combineTranscriptCandidates <- function(readClassList, min.readCount, min.readFractionByGene, min.txScore.multiExon, min.txScore.singleExon, verbose) %>% data.table() combinedSplicedTranscripts[,confidenceType := "highConfidenceJunctionReads"] - # when single exon min score is 1, skip unspliced transcripts combination - # by right, estimated txScore will not reach 1 - if (min.txScore.singleExon == 1) + # when single exon min score is greater than 1, skip unspliced transcripts combination + # this is a very customized config, useful when data is very big + if (min.txScore.singleExon > 1) return(combinedSplicedTranscripts) combinedUnsplicedTranscripts <- combineUnsplicedTranscriptModels(readClassList, bpParameters, From b56390588b45ed3f13393cc0590ef6aa77e80fa7 Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Thu, 23 Jan 2025 11:08:36 +0800 Subject: [PATCH 185/189] update function documentation --- R/bambu-extendAnnotations-utilityExtend.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/bambu-extendAnnotations-utilityExtend.R b/R/bambu-extendAnnotations-utilityExtend.R index 8d20ba7c..d65d70ea 100644 --- a/R/bambu-extendAnnotations-utilityExtend.R +++ b/R/bambu-extendAnnotations-utilityExtend.R @@ -878,7 +878,7 @@ setNDR <- function(extendedAnnotations, NDR = NULL, includeRef = FALSE, prefix = } -#' Extend annotations by clusters (work in progress?) +#' Extend annotations by clusters #' @noRd isore.extendAnnotations.clusters <- function(readClassList, annotations, clusters, NDR, isoreParameters, stranded, bpParameters, fusionMode, verbose = FALSE){ message("--- Start extending annotations for clusters ---") From b3fed7cbd9caaf5819a1f5513609483eb8400fea Mon Sep 17 00:00:00 2001 From: Chen Ying Date: Thu, 23 Jan 2025 11:22:15 +0800 Subject: [PATCH 186/189] update example code for clustercells with bug fix and update advanced option paper link --- README.md | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 6e710ec6..5f9f81b7 100755 --- a/README.md +++ b/README.md @@ -292,7 +292,7 @@ There is a single-cell and spatial pipeline starting from fastq or demultiplexed For advanced users see the #[Custom single-cell and spatial analysis](#Custom-Single-Cell-and-Spatial) section under advanced options ### *Bambu* Advanced Options -Below we include several advanced options and use-cases for *bambu*. We recommend reading and understanding the [paper](https://www.biorxiv.org/content/10.1101/2022.11.14.516358v1) before attempting to use these features. +Below we include several advanced options and use-cases for *bambu*. We recommend reading and understanding the [paper](https://doi.org/10.1038/s41592-023-01908-w) before attempting to use these features. ### Using a pretrained model @@ -410,12 +410,12 @@ In situations where training is not or cannot be performed, and the default mode ```rscript # first train the model using a related annotated dataset from .bam -se = bambu(reads = sample1.bam, annotations = annotations, genome = fa.file, discovery = FALSE, quant = FALSE, opt.discovery = list(returnModel = TRUE)) # note that discovery and quant need to be set to FALSE, alternatively you can have them set to TRUE and retrieve the model from the rcFile as long as returnModel = TRUE ([see here](#Storing-and-using-preprocessed-files-rcFiles)). +se <- bambu(reads = sample1.bam, annotations = annotations, genome = fa.file, discovery = FALSE, quant = FALSE, opt.discovery = list(returnModel = TRUE)) # note that discovery and quant need to be set to FALSE, alternatively you can have them set to TRUE and retrieve the model from the rcFile as long as returnModel = TRUE ([see here](#Storing-and-using-preprocessed-files-rcFiles)). newDefaultModel = metadata(se[[1]])$model # [[1]] will select the model trained on the first sample # alternatively train the model using an rcFile rcFile <- readRDS(pathToRcFile) -newDefaultModel = trainBambu(rcFile) +newDefaultModel <- trainBambu(rcFile) # use the trained model on another sample # sample2.bam and fa.file2 represent the aligned reads and genome for the poorly annotated sample @@ -493,7 +493,7 @@ Optional: **barcodesToFilter**: A string vector indicating barcodes to be filtered out.
    ```rscript -readClassFile = bambu(reads = samples, annotations = annotations, genome = fa.file, ncore = 1, discovery = FALSE, quant = FALSE, demultiplexed = barcode_maps, verbose = TRUE, assignDist = FALSE, lowMemory = as.logical("$params.lowMemory"), yieldSize = 10000000, sampleNames = ids, cleanReads = as.logical($cleanReads), dedupUMI = as.logical($deduplicateUMIs)) +readClassFile <- bambu(reads = samples, annotations = annotations, genome = fa.file, ncore = 1, discovery = FALSE, quant = FALSE, demultiplexed = barcode_maps, verbose = TRUE, assignDist = FALSE, lowMemory = as.logical("$params.lowMemory"), yieldSize = 10000000, sampleNames = ids, cleanReads = as.logical($cleanReads), dedupUMI = as.logical($deduplicateUMIs)) ``` #### Transcript Discovery: @@ -501,17 +501,17 @@ readClassFile = bambu(reads = samples, annotations = annotations, genome = fa.fi Transript discovery can be run as usual as typically bulk-level discovery is suitable. However cluster-level transcript discovery can be preformed using the clusters argument which can be redone done after clustering. ```rscript -extendedAnno = bambu(reads = readClassFile, annotations = annotations, genome = fa.file, ncore = 1, discovery = TRUE, quant = FALSE, demultiplexed = TRUE, verbose = FALSE, assignDist = FALSE) +extendedAnno <- bambu(reads = readClassFile, annotations = annotations, genome = fa.file, ncore = 1, discovery = TRUE, quant = FALSE, demultiplexed = TRUE, verbose = FALSE, assignDist = FALSE) ``` #### Read Class Assignment: This step was previously performed together with the quantification, but can be done seperately so that the arguments can be passed to the quantification seperately with different clustering. If you only want barcode level gene counts or unique transcript counts you can stop here and do not need to proceed to the EM quantification. -**spatial**: This should be a path to your barcode whitelist that also contians the x and y coordinates as extra columns. +**spatial**: This should be a path to your barcode whitelist that also contains the x and y coordinates as extra columns. If provided, the file should contain 3 columns with or without header, where the first column is the barcode, and the second and third column contains the x and y coordinates information accordingly. Compressed file format is accepted as well. ```rscript -quantData = bambu(reads = readClassFile, annotations = extendedAnno, genome = fa.file, ncore = 1, discovery = FALSE, quant = FALSE, demultiplexed = TRUE, verbose = FALSE, opt.em = list(degradationBias = FALSE), assignDist = TRUE, spatial = spatial) +quantData <- bambu(reads = readClassFile, annotations = extendedAnno, genome = fa.file, ncore = 1, discovery = FALSE, quant = FALSE, demultiplexed = TRUE, verbose = FALSE, opt.em = list(degradationBias = FALSE), assignDist = TRUE, spatial = spatial) ``` #### EM quantification: @@ -522,7 +522,7 @@ If you plan to run this step with multiple processes we recommend restarting you **quantData**: This is the summerized experiement output from the Read Class Assignment step
    -**clusters**: This is an optional argument which is either a path to a csv containing the barcode to cluster assignments or a list
    +**clusters**: This is an optional argument which is either a path to a csv containing the barcode to cluster assignments or a CharacterList which can be produced using the code below.
    **opt.em = list(degradationBias=FALSE)**: We recommend including this argument if you are doing barcode level EM quantification to greatly improve runtime with only a small reduction in quantification accuracy. @@ -530,19 +530,19 @@ If you plan to run this step with multiple processes we recommend restarting you #use Seurat to generate clusters from gene counts library(Seurat) -clusterCells = function(counts, resolution = 0.8, dim = 15){ +clusterCells <- function(counts, resolution = 0.8, dim = 15){ cellMix <- CreateSeuratObject(counts = counts, project = "cellMix", min.cells = 1)#, min.features = 200) #cellMix <- subset(cellMix, subset = nFeature_RNA > nFeature_RNA_threshold & nFeature_RNA < nFeature_RNA_threshold_max) - #nFeature_RNA_threshold = 1000, nFeature_RNA_threshold_max = 9000, + #nFeature_RNA_threshold <- 1000, nFeature_RNA_threshold_max = 9000, cellMix <- NormalizeData(cellMix, normalization.method = "LogNormalize", scale.factor = 10000) cellMix <- FindVariableFeatures(cellMix, selection.method = "vst", nfeatures = 2500) all.genes <- rownames(cellMix) cellMix <- ScaleData(cellMix, features = all.genes) - npcs = ifelse(ncol(counts)>50, 50, ncol(counts)-1) + npcs <- ifelse(ncol(counts)>50, 50, ncol(counts)-1) cellMix <- RunPCA(cellMix, features = VariableFeatures(object = cellMix), npcs = npcs) - dim = ifelse(dim >= dim(cellMix@reductions$pca)[2], dim, dim(cellMix@reductions$pca)[2]) + dim <- ifelse(dim >= dim(cellMix@reductions$pca)[2], dim(cellMix@reductions$pca)[2],dim) # if data dimension is small, otherwise, cap dimension at 15 cellMix <- FindNeighbors(cellMix, dims = 1:dim) cellMix <- FindClusters(cellMix, resolution = resolution) cellMix <- RunUMAP(cellMix, dims = 1:dim) @@ -550,16 +550,16 @@ clusterCells = function(counts, resolution = 0.8, dim = 15){ return(cellMix) } -quantData.gene = transcriptToGeneExpression(quantData) -counts = assays(quantData.gene)$counts[,1] #selecting first sample -cellMix = clusterCells(counts, resolution = resolution) #resolution is dependant on sample. For larger clusters: 0.2-0.6, for higher resolution: 0.8-2 -x = setNames(names(cellMix@active.ident), cellMix@active.ident) -clusters = splitAsList(unname(x), names(x)) +quantData.gene <- transcriptToGeneExpression(quantData) +counts <- assays(quantData.gene)$counts #selecting first sample +cellMix <- clusterCells(counts) #resolution can be customized. For larger clusters: 0.2-0.6, for higher resolution: 0.8-2 +x <- setNames(names(cellMix@active.ident), cellMix@active.ident) +clusters_temp <- splitAsList(unname(x), paste)("cluster",names(x)))#make clusters names start with cluster, for better comprehension -se = bambu( reads = "placeholder", - annotations = extendedAnno, +se <- bambu( reads = NULL, + annotations = rowRanges(quantDatas), genome = "$genome", quantData = quantDatas, assignDist = FALSE, @@ -569,7 +569,7 @@ se = bambu( reads = "placeholder", demultiplexed = TRUE, verbose = FALSE, opt.em = list(degradationBias = FALSE), - clusters = clusters) + clusters = clusters_temp) ``` ### *Bambu* Arguments @@ -593,7 +593,7 @@ se = bambu( reads = "placeholder", | verbose | A logical variable indicating whether processing messages will be printed. | | mode | A string that will set other input arguments ['bulk', 'multiplexed', 'fusion', 'debug']
    bulk -
        processByBam = TRUE
        processByChromsome = FALSE
    multiplexed -
        demultiplex = TRUE
        cleanReads = TRUE
        opt.em = list(degradationBias = FALSE)
        quant = FALSE
        processByChromosome = TRUE
    fusion -
        NDR = 1
        fusionMode = TRUE
    debug -
        verbose = TRUE
        trackReads = TRUE
        returnDistTable = TRUE | | demultiplexed | A logical variable indicating whether the input bam file is demultiplexed. The barcode and umi either need to be present in the read name or the $BC and $UG tags, defaults to FALSE. Alternatively a path to a csv file can be provided where column 1 is read names, column 2 is barcodes, and column 3 is UMI. | -| spatial | A path to the barcode whitelist containing X and Y coordinates, defaults to null. | +| spatial | A path to the barcode whitelist containing X and Y coordinates, defaults to null. If provided, the file should contain 3 columns with or without header, where the first column is the barcode, and the second and third column contains the x and y coordinates information accordingly. Compressed file format is accepted as well.| | assignDist | A logical variable indicating whether read class to transcript assignment will be performed, defaults to TRUE. | | quantData | Advanced use only. A list of se outputs from the assignDist step. Used only to run quantification | | sampleNames | A vector of strings representing the sample name associated with each input bam. bam files with the same sample name will be combined | @@ -624,7 +624,7 @@ rowRanges(se) |column|description| |---|---| |seqnames|The scaffold name the transcript is found on| -|ranges|An iRanges object containing the start and end coordinates of the transcript (not stranded)| +|ranges|An IRanges object containing the start and end coordinates of the transcript (not stranded)| |strand|The strand of the transcript (+, -, *)| |exon_rank|The exon index of the exons in the transcript starting from the 5’ end of the transcript| |exon_endRank|The exon index of the exons in the transcript starting from the 3’ end of the transcript| From 596897ab1763916d368a95bb1478a9520b832be4 Mon Sep 17 00:00:00 2001 From: lingminhao Date: Sun, 26 Jan 2025 10:02:04 +0800 Subject: [PATCH 187/189] rename unused argument --- R/prepareDataFromBam.R | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index 98bfb778..8ce5a921 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -71,8 +71,8 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, if(cleanReads){ softClip5Prime <- clipFunction(cigarData = GenomicAlignments::cigar(alignmentInfo), grep_pattern = '^(\\d*)[S].*', replace_pattern = '\\1') softClip3Prime <- clipFunction(cigarData = GenomicAlignments::cigar(alignmentInfo), grep_pattern = '.*\\D(\\d*)[S]$', replace_pattern = '\\1') - hardClip5Prime <- clipFunction(alignData = GenomicAlignments::cigar(alignmentInfo), grep_pattern = '^(\\d*)[H].*', replace_pattern = '\\1') - hardClip3Prime <- clipFunction(alignData = GenomicAlignments::cigar(alignmentInfo), grep_pattern = '.*\\D(\\d*)[H]$', replace_pattern = '\\1') + hardClip5Prime <- clipFunction(cigarData = GenomicAlignments::cigar(alignmentInfo), grep_pattern = '^(\\d*)[H].*', replace_pattern = '\\1') + hardClip3Prime <- clipFunction(cigarData = GenomicAlignments::cigar(alignmentInfo), grep_pattern = '.*\\D(\\d*)[H]$', replace_pattern = '\\1') # softClip5Prime <-suppressWarnings(pmax(0,as.numeric(gsub('^(\\d*)[S].*','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T)) # softClip3Prime <-suppressWarnings(pmax(0,as.numeric(gsub('.*\\D(\\d*)[S]$','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T)) # hardClip5Prime <-suppressWarnings(pmax(0,as.numeric(gsub('^(\\d*)[H].*','\\1',GenomicAlignments::cigar(alignmentInfo))), na.rm=T)) @@ -154,4 +154,4 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, clipFunction <- function(cigarData, grep_pattern, replace_pattern){ return(suppressWarnings(pmax(0,as.numeric(gsub(grep_pattern,replace_pattern, cigarData)), na.rm=T))) -} \ No newline at end of file +} From 01562224ca58156b3cd43dc5d99975a3d95be39a Mon Sep 17 00:00:00 2001 From: lingminhao Date: Wed, 29 Jan 2025 02:29:40 +0800 Subject: [PATCH 188/189] improve flexibility for BC&UMI parsing --- R/prepareDataFromBam.R | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/R/prepareDataFromBam.R b/R/prepareDataFromBam.R index 8ce5a921..f9f8b414 100755 --- a/R/prepareDataFromBam.R +++ b/R/prepareDataFromBam.R @@ -45,19 +45,17 @@ prepareDataFromBam <- function(bamFile, yieldSize = NULL, verbose = FALSE, readGrgList[[counter]] <-grglist(alignmentInfo) if (!isFALSE(demultiplexed)){ # if demultiplexed is TRUE or a string path if(isTRUE(demultiplexed)){ # if demultiplexed is TRUE - mcols(readGrgList[[counter]])$BC <- ifelse(!is.na(mcols(alignmentInfo)$BC), - mcols(alignmentInfo)$BC, - ifelse(grepl("[GACT]_",names(readGrgList[[counter]])), # a checkpoint to see whether BC is contained in the name, with specific format BC_UMI#READNAME - gsub("(^[GACT]+(?=_)).*", '\\1', - names(readGrgList[[counter]]), perl = TRUE), - NA)) - mcols(readGrgList[[counter]])$UMI <- ifelse(!is.na(mcols(alignmentInfo)$UG), mcols(alignmentInfo)$UG, - ifelse(grepl("[GACT]#",names(readGrgList[[counter]])), # a checkpoint to see whether UMI is contained in the name, with specific format BC_UMI#READNAME - gsub(".*((?<=_)[GACT]*(?=#)).*", '\\1', names(readGrgList[[counter]]), perl = TRUE), - NA)) + + mcols(readGrgList[[counter]])$BC <- case_when(grepl("^[^_]+_[^#]+#", names(readGrgList[[counter]]), perl = TRUE) ~ sub("_.*", "", names(readGrgList[[counter]])), # a checkpoint to see whether BC is contained in the name, with specific format BC_UMI#READNAME, + !is.na(mcols(alignmentInfo)$BC) ~ mcols(alignmentInfo)$BC, + TRUE ~ NA) + + mcols(readGrgList[[counter]])$UMI <- case_when(grepl("^[^_]+_[^#]+#", names(readGrgList[[counter]]), perl = TRUE) ~ sub("^[^_]+_([^#]+)#.*$", "\\1", names(readGrgList[[counter]])), # a checkpoint to see whether UMI is contained in the name, with specific format BC_UMI#READNAME, + !is.na(mcols(alignmentInfo)$UG) ~ mcols(alignmentInfo)$UG, + TRUE ~ NA) } else{ # if demultiplexed is a string path mcols(readGrgList[[counter]])$BC <- NA - mcols(readGrgList[[counter]])$UMI <- "NA" + mcols(readGrgList[[counter]])$UMI <- NA mcols(readGrgList[[counter]])$BC <- readMap[,2][match(names(readGrgList[[counter]]),readMap[,1])] if(ncol(readMap)>2){ mcols(readGrgList[[counter]])$UMI <- readMap[,3][match(names(readGrgList[[counter]]),readMap[,1])] From b122513e4ce1c15c51d594bbc19b0a906edea87c Mon Sep 17 00:00:00 2001 From: lingminhao Date: Wed, 5 Feb 2025 17:03:26 +0800 Subject: [PATCH 189/189] fix bug about CompressedCharacterList --- R/bambu.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/bambu.R b/R/bambu.R index bc68727b..a42ae236 100644 --- a/R/bambu.R +++ b/R/bambu.R @@ -268,7 +268,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL, #load in the barcode clustering from file if provided iter <- seq_len(ncol(metadata(quantData_i)$countMatrix)) # iter is integer if(!is.null(clusters)){ - if(class(clusters)!="CompressedCharacterList"){ # !is.list(clusters) is FALSE for CompressedCharacterList + if(class(clusters[[i]])!="CompressedCharacterList"){ # !is.list(clusters) is FALSE for CompressedCharacterList clusterMaps <- NULL for(j in seq_along(metadata(quantData_i)$sampleNames)){ #load in a file per sample name provided clusterMap <- fread(clusters[[j]], header = FALSE,

    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Ó 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 z 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 E1CQE1XaE2J literal 304427 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%0DL=O!1gE!G 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�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%0AG;Ce`MJ5-Of<;G)wZa+1o|&E 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

    =0Cr6w=}>5f}xR?9bd`> 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�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