## ----quick-start-------------------------------------------------------------- # exons <- prepare_exons( # txdb = , # dtu_table = , # coef_col = "estimate" # ) # # exons <- preprocess(exons, coef_col = "estimate") # # # find skipped exons: # skipped <- exons |> find_se() ## ----dtu-table---------------------------------------------------------------- library(readr) # load DTU results dir <- system.file("extdata", package="splicelogic") dtu_table <- readr::read_delim(file.path(dir, "dtu_table.tsv")) ## ----load-exons--------------------------------------------------------------- library(plyranges) exons_file <- "exons_M31.bed.gz" exons_mcols_file <- "exons_mcols.tsv.gz" exons <- plyranges::read_bed(file.path(dir, exons_file)) mcols(exons) <- DataFrame( readr::read_delim(file.path(dir, exons_mcols_file)) ) ## ----add-seqinfo-------------------------------------------------------------- si <- Seqinfo::Seqinfo(genome="mm39") seqlevels(exons) <- seqlevels(si) seqinfo(exons) <- si ## ----merge-dtu---------------------------------------------------------------- txp_idx <- match(exons$tx_id, dtu_table$tx_id) cols_to_add <- dtu_table[txp_idx, ] |> dplyr::select(-tx_id) merged_DF <- S4Vectors::cbind(mcols(exons), cols_to_add) mcols(exons) <- merged_DF ## ----join-mcols--------------------------------------------------------------- # exons <- exons |> # plyranges::join_mcols_left(dtu_table, by = "tx_id") ## ----filter-sig--------------------------------------------------------------- sig_exons <- exons |> filter(padj < .1) ## ----preprocess--------------------------------------------------------------- library(splicelogic) sig_exons <- sig_exons |> preprocess(coef_col = "estimate") ## ----calc-se------------------------------------------------------------------ skipped <- sig_exons |> find_se() skipped ## ----calc-re------------------------------------------------------------------ included <- sig_exons |> find_ie() included ## ----calc-mx------------------------------------------------------------------ mx <- sig_exons |> find_mxe() mx ## ----calc-ri------------------------------------------------------------------ ri <- sig_exons |> find_ri() ri ## ----calc-a5-a3-ss------------------------------------------------------------ a5ss <- sig_exons |> find_a5ss() a5ss a3ss <- sig_exons |> find_a3ss() a3ss ## ----calc-all----------------------------------------------------------------- all_events <- sig_exons |> find_all_events() all_events ## ----events-barplot----------------------------------------------------------- barplot( table(all_events$event), horiz=TRUE, las=1, xlab="exons participating in an event" ) ## ----ahub--------------------------------------------------------------------- suppressPackageStartupMessages({ library(AnnotationHub) library(AnnotationDbi) library(GenomicFeatures) }) ah <- AnnotationHub() txdb <- ah[["AH75191"]] # GENCODE v32 (human) ## ----get-txps----------------------------------------------------------------- suppressPackageStartupMessages({ library(tibble) }) txps <- txdb |> AnnotationDbi::select( keys(txdb, "TXID"), c("TXNAME","GENEID"), "TXID" ) |> tibble::as_tibble() |> dplyr::select(tx_num = TXID, tx_id = TXNAME, gene_id = GENEID) |> dplyr::filter(!is.na(gene_id)) txps ## ----sim-dtu------------------------------------------------------------------ # simulate DTU results sim_dtu_table <- txps |> dplyr::mutate( padj = runif(dplyr::n()), effect_est = rnorm(dplyr::n()) ) sim_dtu_table ## ----prepare-exons------------------------------------------------------------ human_exons <- prepare_exons( txdb, sim_dtu_table, coef_col = "effect_est", verbose = TRUE ) human_exons <- human_exons |> filter(padj < .01) |> preprocess(coef_col = "effect_est") ## ----extract-exons------------------------------------------------------------ # extract exons as a GRangesList exons_list <- GenomicFeatures::exonsBy( txdb, by="tx" ) # Our DTU table aligns with txps, which aligns with the names # of the GRangesList. prepare_exons() handles alignment checks. names(exons_list) <- sim_dtu_table$tx_id ## ----flatten-exons------------------------------------------------------------ flat_exons <- unlist(exons_list) # swap tx_id with exon_name as the names of the GRanges flat_exons$tx_id <- names(flat_exons) # store transcript ids names(flat_exons) <- flat_exons$exon_name ## ----add-dtu------------------------------------------------------------------ txp_idx <- match(flat_exons$tx_id, sim_dtu_table$tx_id) cols_to_add <- sim_dtu_table[txp_idx,] |> dplyr::select(-c(tx_id, tx_num)) merged_DF <- cbind(mcols(flat_exons), cols_to_add) mcols(flat_exons) <- merged_DF ## ----session-info------------------------------------------------------------- sessionInfo()