An introduction to the bambu package using NanoporeRNASeq data

Introduction

NanoporeRNASeq contains RNA-Seq data from the K562 and MCF7 cell lines that were generated by the SG-NEx project (https://github.com/GoekeLab/sg-nex-data). Each of these cell line has three replicates, with 1 direct RNA sequencing data and 2 cDNA sequencing data. The files contains reads aligned to the human genome (Grch38) chromosome 22 (1:25500000).

Accessing NanoporeRNASeq data

Load the NanoporeRNASeq package

library("NanoporeRNASeq")

List the samples

data("SGNexSamples")
SGNexSamples
##> DataFrame with 6 rows and 6 columns
##>                sample_id    Platform    cellLine    protocol cancer_type
##>              <character> <character> <character> <character> <character>
##> 1 K562_directcDNA_repl..      MinION        K562  directcDNA   Leukocyte
##> 2 K562_directcDNA_repl..     GridION        K562  directcDNA   Leukocyte
##> 3 K562_directRNA_repli..     GridION        K562   directRNA   Leukocyte
##> 4 MCF7_directcDNA_repl..      MinION        MCF7  directcDNA      Breast
##> 5 MCF7_directcDNA_repl..     GridION        MCF7  directcDNA      Breast
##> 6 MCF7_directRNA_repli..     GridION        MCF7   directRNA      Breast
##>                fileNames
##>              <character>
##> 1 NanoporeRNASeq/versi..
##> 2 NanoporeRNASeq/versi..
##> 3 NanoporeRNASeq/versi..
##> 4 NanoporeRNASeq/versi..
##> 5 NanoporeRNASeq/versi..
##> 6 NanoporeRNASeq/versi..

List the available BamFile

library(ExperimentHub)
NanoporeData <- query(ExperimentHub(), c("NanoporeRNA", "GRCh38", "Bam"))
bamFiles <- Rsamtools::BamFileList(NanoporeData[["EH3808"]], NanoporeData[["EH3809"]],
    NanoporeData[["EH3810"]], NanoporeData[["EH3811"]], NanoporeData[["EH3812"]],
    NanoporeData[["EH3813"]])

Get the annotation GRangesList

data("HsChr22BambuAnnotation")
HsChr22BambuAnnotation
##> GRangesList object of length 1500:
##> $ENST00000043402
##> GRanges object with 2 ranges and 2 metadata columns:
##>       seqnames            ranges strand | exon_rank exon_endRank
##>          <Rle>         <IRanges>  <Rle> | <integer>    <integer>
##>   [1]       22 20241415-20243110      - |         2            1
##>   [2]       22 20268071-20268531      - |         1            2
##>   -------
##>   seqinfo: 1 sequence from an unspecified genome; no seqlengths
##> 
##> $ENST00000086933
##> GRanges object with 3 ranges and 2 metadata columns:
##>       seqnames            ranges strand | exon_rank exon_endRank
##>          <Rle>         <IRanges>  <Rle> | <integer>    <integer>
##>   [1]       22 19148576-19149095      - |         3            1
##>   [2]       22 19149663-19149916      - |         2            2
##>   [3]       22 19150025-19150283      - |         1            3
##>   -------
##>   seqinfo: 1 sequence from an unspecified genome; no seqlengths
##> 
##> $ENST00000155674
##> GRanges object with 8 ranges and 2 metadata columns:
##>       seqnames            ranges strand | exon_rank exon_endRank
##>          <Rle>         <IRanges>  <Rle> | <integer>    <integer>
##>   [1]       22 17137511-17138357      - |         8            1
##>   [2]       22 17138550-17138738      - |         7            2
##>   [3]       22 17141059-17141233      - |         6            3
##>   [4]       22 17143098-17143131      - |         5            4
##>   [5]       22 17145024-17145117      - |         4            5
##>   [6]       22 17148448-17148560      - |         3            6
##>   [7]       22 17149542-17149745      - |         2            7
##>   [8]       22 17165209-17165287      - |         1            8
##>   -------
##>   seqinfo: 1 sequence from an unspecified genome; no seqlengths
##> 
##> ...
##> <1497 more elements>

Visualizing gene of interest from a single bam file

We can visualize the one sample for a single gene ENST00000215832 (MAPK1)

library(ggbio)
range <- HsChr22BambuAnnotation$ENST00000215832
# plot mismatch track
library(BSgenome.Hsapiens.NCBI.GRCh38)
# plot annotation track
tx <- autoplot(range, aes(col = strand), group.selfish = TRUE)
# plot coverage track
coverage <- autoplot(bamFiles[[1]], aes(col = coverage), which = range)

# merge the tracks into one plot
tracks(annotation = tx, coverage = coverage, heights = c(1, 3)) + theme_minimal()

Running Bambu with NanoporeRNASeq data

Load the bambu package

library(bambu)
genomeSequenceData <- query(ExperimentHub(), c("NanoporeRNA", "GRCh38", "FASTA"))
genomeSequence <- genomeSequenceData[["EH7260"]]

Run bambu

Applying bambu to bamFiles

se <- bambu(reads = bamFiles, annotations = HsChr22BambuAnnotation, genome = genomeSequence)

bambu returns a SummarizedExperiment object

se
##> class: RangedSummarizedExperiment 
##> dim: 1542 6 
##> metadata(2): incompatibleCounts warnings
##> assays(4): counts CPM fullLengthCounts uniqueCounts
##> rownames(1542): BambuTx1 BambuTx2 ... ENST00000641933 ENST00000641967
##> rowData names(11): TXNAME GENEID ... txid eqClassById
##> colnames(6): 1a0332368209_3844 1a034803f231_3846 ... 1a03a01b1fd_3852
##>   1a031829bbf2_3854
##> colData names(1): name

Visualizing gene examples

We can visualize the annotated and novel isoforms identified in this gene example using plot functions from bambu

plotBambu(se, type = "annotation", gene_id = "ENSG00000099968")
sessionInfo()
##> R version 4.6.1 (2026-06-24)
##> Platform: x86_64-pc-linux-gnu
##> Running under: Ubuntu 26.04.1 LTS
##> 
##> Matrix products: default
##> BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 
##> LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.32.so;  LAPACK version 3.12.0
##> 
##> locale:
##>  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##>  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
##>  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##>  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##>  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
##> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
##> 
##> time zone: Etc/UTC
##> tzcode source: system (glibc)
##> 
##> attached base packages:
##> [1] stats4    stats     graphics  grDevices utils     datasets  methods  
##> [8] base     
##> 
##> other attached packages:
##>  [1] bambu_3.15.1                          
##>  [2] SummarizedExperiment_1.43.0           
##>  [3] Biobase_2.73.2                        
##>  [4] MatrixGenerics_1.25.0                 
##>  [5] matrixStats_1.5.0                     
##>  [6] BSgenome.Hsapiens.NCBI.GRCh38_1.3.1000
##>  [7] BSgenome_1.81.1                       
##>  [8] rtracklayer_1.73.0                    
##>  [9] BiocIO_1.23.3                         
##> [10] ggbio_1.61.0                          
##> [11] ggplot2_4.0.3                         
##> [12] Rsamtools_2.29.0                      
##> [13] Biostrings_2.81.9                     
##> [14] XVector_0.53.0                        
##> [15] GenomicRanges_1.65.4                  
##> [16] IRanges_2.47.5                        
##> [17] S4Vectors_0.51.10                     
##> [18] Seqinfo_1.3.2                         
##> [19] NanoporeRNASeq_1.23.1                 
##> [20] ExperimentHub_3.3.2                   
##> [21] AnnotationHub_4.3.2                   
##> [22] BiocFileCache_3.3.0                   
##> [23] dbplyr_2.6.0                          
##> [24] BiocGenerics_0.59.12                  
##> [25] generics_0.1.4                        
##> [26] rmarkdown_2.32                        
##> 
##> loaded via a namespace (and not attached):
##>   [1] RColorBrewer_1.1-3       sys_3.4.3                rstudioapi_0.19.0       
##>   [4] jsonlite_2.0.0           magrittr_2.0.5           GenomicFeatures_1.65.0  
##>   [7] farver_2.1.2             vctrs_0.7.3              memoise_2.0.1           
##>  [10] RCurl_1.98-1.20          base64enc_0.1-6          htmltools_0.5.9         
##>  [13] S4Arrays_1.13.2          BiocBaseUtils_1.15.1     curl_8.0.0              
##>  [16] xgboost_3.2.1.1          SparseArray_1.13.4       Formula_1.2-6           
##>  [19] sass_0.4.10              bslib_0.12.0             htmlwidgets_1.6.4       
##>  [22] plyr_1.8.9               httr2_1.3.0              cachem_1.1.0            
##>  [25] buildtools_1.0.0         GenomicAlignments_1.49.2 lifecycle_1.0.5         
##>  [28] pkgconfig_2.0.3          Matrix_1.7-6             R6_2.6.1                
##>  [31] fastmap_1.2.0            digest_0.6.39            colorspace_2.1-4        
##>  [34] AnnotationDbi_1.75.2     OrganismDbi_1.55.1       Hmisc_5.3-0             
##>  [37] RSQLite_3.53.3           filelock_1.0.3           labeling_0.4.3          
##>  [40] httr_1.4.9               abind_1.4-8              compiler_4.6.1          
##>  [43] bit64_4.8.6              withr_3.0.3              htmlTable_2.5.0         
##>  [46] S7_0.2.2                 backports_1.5.1          BiocParallel_1.47.0     
##>  [49] DBI_1.3.0                rappdirs_0.3.4           DelayedArray_0.39.8     
##>  [52] rjson_0.2.23             tools_4.6.1              foreign_0.8-91          
##>  [55] nnet_7.3-21              glue_1.8.1               restfulr_0.0.17         
##>  [58] grid_4.6.1               checkmate_2.3.4          cluster_2.1.8.3         
##>  [61] reshape2_1.4.5           gtable_0.3.6             tidyr_1.3.2             
##>  [64] ensembldb_2.37.3         data.table_1.18.6.1      BiocVersion_3.24.0      
##>  [67] pillar_1.11.1            stringr_1.6.0            dplyr_1.2.1             
##>  [70] lattice_0.23-1           bit_4.6.0                biovizBase_1.61.0       
##>  [73] tidyselect_1.2.1         RBGL_1.89.0              maketools_1.3.2         
##>  [76] knitr_1.52               gridExtra_2.3.1          ProtGenerics_1.45.0     
##>  [79] xfun_0.61                stringi_1.8.9            UCSC.utils_1.9.0        
##>  [82] lazyeval_0.2.3           yaml_2.3.12              evaluate_1.0.5          
##>  [85] codetools_0.2-20         cigarillo_1.3.1          tibble_3.3.1            
##>  [88] BiocManager_1.30.27      graph_1.91.0             cli_3.6.6               
##>  [91] rpart_4.1.27             jquerylib_0.1.4          dichromat_2.0-1         
##>  [94] Rcpp_1.1.2               GenomeInfoDb_1.49.1      png_0.1-9               
##>  [97] XML_3.99-0.25            parallel_4.6.1           blob_1.3.0              
##> [100] AnnotationFilter_1.37.0  bitops_1.1-0             VariantAnnotation_1.59.4
##> [103] scales_1.4.0             purrr_1.2.2              crayon_1.5.3            
##> [106] rlang_1.3.0              KEGGREST_1.53.6          formatR_1.14