Skip to content

Commit 7ef1e7b

Browse files
author
SuiYue-2308
committed
Introduces setRcAssignmentParameters() with min.exonDistance, min.primarySecondaryDist, and min.primarySecondaryDistStartEnd2, so the assignment step can be tuned independently from opt.discovery. calculateDistTable() and assignReadClasstoTranscripts() now use rcAssignmentParameters instead of isoreParameters.
1 parent 315e764 commit 7ef1e7b

3 files changed

Lines changed: 37 additions & 13 deletions

File tree

R/bambu-assignDist.R

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
#' @inheritParams bambu
33
#' @import data.table
44
#' @noRd
5-
assignReadClasstoTranscripts <- function(readClassList, annotations, isoreParameters,
6-
verbose, sampleMetadata, demultiplexed,
5+
assignReadClasstoTranscripts <- function(readClassList, annotations,
6+
rcAssignmentParameters, verbose, sampleMetadata, demultiplexed,
77
returnDistTable = FALSE, trackReads = TRUE) {
88
if (is.character(readClassList)) readClassList <- readRDS(file = readClassList)
9-
metadata(readClassList)$readClassDist <- calculateDistTable(readClassList, annotations, isoreParameters, verbose, returnDistTable)
9+
metadata(readClassList)$readClassDist <- calculateDistTable(readClassList, annotations, rcAssignmentParameters, verbose, returnDistTable)
1010
readClassList <- splitReadClassFiles(readClassList)
1111
readClassDt <- genEquiRCs(metadata(readClassList)$readClassDist, annotations, verbose)
1212
readClassDt$eqClass.match = match(readClassDt$eqClassById,metadata(readClassList)$eqClassById)

R/bambu.R

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,17 @@
6262
#' \item{prefix}{specifying prefix for new gene Ids (genePrefix.number),
6363
#' defaults to "Bambu"}
6464
#' }
65+
#' @param opt.rcAssignment A list of controlling parameters for the read class
66+
#' to transcript assignment process:
67+
#' \describe{
68+
#' \item{min.exonDistance}{specifying minimum distance to known transcript
69+
#' to be considered a valid match, defaults to 35bp}
70+
#' \item{min.primarySecondaryDist}{specifying the minimum distance
71+
#' threshold between primary and secondary assignments, defaults to 5bp}
72+
#' \item{min.primarySecondaryDistStartEnd2}{specifying the minimum
73+
#' distance threshold for start/end positions used for read assignment,
74+
#' defaults to 5bp}
75+
#' }
6576
#' @param opt.em A list of controlling parameters for quantification
6677
#' algorithm estimation process:
6778
#' \describe{
@@ -141,8 +152,8 @@
141152
#' genome = fa.file, discovery = TRUE, quant = TRUE)
142153
#' @export
143154
bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL,
144-
mode = NULL, opt.discovery = NULL, opt.em = NULL, rcOutDir = NULL, discovery = TRUE,
145-
assignDist = TRUE, quant = TRUE, stranded = FALSE, ncore = 1, yieldSize = NULL,
155+
mode = NULL, opt.discovery = NULL, opt.rcAssignment = NULL, opt.em = NULL, rcOutDir = NULL, discovery = TRUE,
156+
assignDist = TRUE, quant = TRUE, stranded = FALSE, ncore = 1, yieldSize = NULL,
146157
trackReads = FALSE, returnDistTable = FALSE, lowMemory = FALSE, sampleData = NULL,
147158
fusionMode = FALSE, verbose = FALSE, demultiplexed = FALSE, quantData = NULL,
148159
sampleNames = NULL, cleanReads = FALSE, dedupUMI = FALSE, barcodesToFilter = NULL, clusters = NULL,
@@ -183,7 +194,7 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL,
183194
isoreParameters <- setIsoreParameters(isoreParameters = opt.discovery)
184195
#below line is to be compatible with earlier version of running bambu
185196
if(!is.null(isoreParameters$max.txNDR)) NDR = isoreParameters$max.txNDR
186-
197+
rcAssignmentParameters <- setRcAssignmentParameters(rcAssignmentParameters = opt.rcAssignment)
187198
emParameters <- setEmParameters(emParameters = opt.em)
188199
bpParameters <- setBiocParallelParameters(reads, ncore, verbose, demultiplexed)
189200
xgb.set.config(nthread = 1)
@@ -242,9 +253,9 @@ bambu <- function(reads, annotations = NULL, genome = NULL, NDR = NULL,
242253
quantData <- bplapply(seq_along(readClassList), function(i){
243254
assignReadClasstoTranscripts(
244255
readClassList = readClassList[[i]],
245-
annotations = annotations,
246-
isoreParameters = isoreParameters,
247-
verbose = verbose,
256+
annotations = annotations,
257+
rcAssignmentParameters = rcAssignmentParameters,
258+
verbose = verbose,
248259
# for bulk data, there is one sampleData (keep sampleData[1]), for single-cell, there is one per sample
249260
sampleMetadata = if(length(sampleData) == 1) sampleData[1] else sampleData[i],
250261
demultiplexed = demultiplexed,

R/bambu_utilityFunctions.R

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,19 @@ setIsoreParameters <- function(isoreParameters){
4141
}
4242

4343

44+
#' setRcAssignmentParameters
45+
#' @noRd
46+
setRcAssignmentParameters <- function(rcAssignmentParameters){
47+
rcAssignmentParameters.default <- list(
48+
min.exonDistance = 35,
49+
min.primarySecondaryDist = 5,
50+
min.primarySecondaryDistStartEnd2 = 5)
51+
rcAssignmentParameters <-
52+
updateParameters(rcAssignmentParameters, rcAssignmentParameters.default)
53+
return(rcAssignmentParameters)
54+
}
55+
56+
4457
#' setEmParameters
4558
#' @noRd
4659
setEmParameters <- function(emParameters){
@@ -242,11 +255,11 @@ handleWarnings <- function(readClassList, verbose){
242255
}
243256

244257
#' Calculate the dist table used for Bambu Quantification
245-
calculateDistTable <- function(readClassList, annotations, isoreParameters, verbose, returnDistTable){
258+
calculateDistTable <- function(readClassList, annotations, rcAssignmentParameters, verbose, returnDistTable){
246259
readClassDist <- isore.estimateDistanceToAnnotations(readClassList, annotations,
247-
min.exonDistance = isoreParameters[["min.exonDistance"]],
248-
min.primarySecondaryDist = isoreParameters[['min.primarySecondaryDist']],
249-
min.primarySecondaryDistStartEnd = isoreParameters[['min.primarySecondaryDistStartEnd2']],
260+
min.exonDistance = rcAssignmentParameters[["min.exonDistance"]],
261+
min.primarySecondaryDist = rcAssignmentParameters[['min.primarySecondaryDist']],
262+
min.primarySecondaryDistStartEnd = rcAssignmentParameters[['min.primarySecondaryDistStartEnd2']],
250263
verbose = verbose)
251264
metadata(readClassDist)$distTable <- modifyIncompatibleAssignment(metadata(readClassDist)$distTable)
252265
if(returnDistTable) metadata(readClassDist)$distTableOld <- metadata(readClassDist)$distTable

0 commit comments

Comments
 (0)