Mercurial > repos > iuc > isoformswitchanalyzer
diff IsoformSwitchAnalyzeR.R @ 0:f3fefb6d8254 draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/isoformswitchanalyzer commit 2c61e4c6151000201dd9a8323722a380bc235380
author | iuc |
---|---|
date | Tue, 24 Jan 2023 18:37:14 +0000 |
parents | |
children | 2c4e879a81cf |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IsoformSwitchAnalyzeR.R Tue Jan 24 18:37:14 2023 +0000 @@ -0,0 +1,924 @@ +# Load the IsoformSwitchAnalyzeR library +library(IsoformSwitchAnalyzeR, + quietly = TRUE, + warn.conflicts = FALSE) +library(argparse, quietly = TRUE, warn.conflicts = FALSE) +library(dplyr, quietly = TRUE, warn.conflicts = FALSE) + +# setup R error handling to go to stderr +options( + show.error.messages = FALSE, + error = function() { + cat(geterrmessage(), file = stderr()) + q("no", 1, FALSE) + } +) + +# we need that to not crash galaxy with an UTF8 error on German LC settings. +loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8") + +################################################################################ +### Input Processing +################################################################################ + + +# Collect arguments from command line +parser <- ArgumentParser(description = "IsoformSwitcheR R script") + +parser$add_argument("--modeSelector") +parser$add_argument("--parentDir", required = FALSE, help = "Parent directory") +parser$add_argument("--readLength", + required = FALSE, + type = "integer", + help = "Read length (required for stringtie)") +parser$add_argument("--annotation", required = FALSE, help = "Annotation") +parser$add_argument("--transcriptome", required = FALSE, help = "Transcriptome") +parser$add_argument( + "--fixStringTieAnnotationProblem", + action = "store_true", + required = FALSE, + help = "Fix StringTie annotation problem" +) +parser$add_argument("--countFiles", required = FALSE, help = "Count files") +parser$add_argument("--toolSource", required = FALSE, help = "Tool source") +parser$add_argument("--rObject", required = FALSE, help = "R object") +parser$add_argument("--IFcutoff", + required = FALSE, + type = "numeric", + help = "IFcutoff") +parser$add_argument( + "--geneExpressionCutoff", + required = FALSE, + type = "numeric", + help = "Gene expression cutoff" +) +parser$add_argument( + "--isoformExpressionCutoff", + required = FALSE, + type = "numeric", + help = "Isoform expression cutoff" +) +parser$add_argument("--alpha", + required = FALSE, + type = "numeric", + help = "") +parser$add_argument("--dIFcutoff", + required = FALSE, + type = "numeric", + help = "dIF cutoff") +parser$add_argument( + "--onlySigIsoforms", + required = FALSE, + action = "store_true", + help = "Only significative isoforms" +) +parser$add_argument( + "--filterForConsequences", + required = FALSE, + action = "store_true", + help = "Filter for consequences" +) +parser$add_argument( + "--removeSingleIsformGenes", + required = FALSE, + action = "store_true", + help = "Remove single isoform genes" +) +parser$add_argument( + "--keepIsoformInAllConditions", + required = FALSE, + action = "store_true", + help = "Keep isoform in all conditions" +) +parser$add_argument( + "--correctForConfoundingFactors", + required = FALSE, + action = "store_true", + help = "Correct for confunding factors" +) +parser$add_argument( + "--overwriteIFvalues", + required = FALSE, + action = "store_true", + help = "Overwrite IF values" +) +parser$add_argument( + "--reduceToSwitchingGenes", + required = FALSE, + action = "store_true", + help = "Reduce to switching genes" +) +parser$add_argument( + "--reduceFurtherToGenesWithConsequencePotential", + required = FALSE, + action = "store_true", + help = "Reduce further to genes with consequence potential" +) +parser$add_argument( + "--keepIsoformInAllConditions2", + required = FALSE, + action = "store_true", + help = "Keep isoform in ll conditions" +) +parser$add_argument("--minORFlength", + required = FALSE, + type = "integer", + help = "") +parser$add_argument("--orfMethod", required = FALSE, help = "ORF methods") +parser$add_argument("--PTCDistance", + required = FALSE, + type = "integer", + help = "") +parser$add_argument( + "--removeShortAAseq", + required = FALSE, + action = "store_true", + help = "Remove short aminoacid sequences" +) +parser$add_argument( + "--removeLongAAseq", + required = FALSE, + action = "store_true", + help = "Remove long aminoacid sequences" +) +parser$add_argument( + "--removeORFwithStop", + required = FALSE, + action = "store_true", + help = "Remove ORF with stop codon" +) +parser$add_argument( + "--onlySwitchingGenes", + required = FALSE, + action = "store_true", + help = "Only switching genes" +) +parser$add_argument("--analysisMode", required = FALSE, help = "Analyze all isoforms with differential usage or single genes") +parser$add_argument( + "--genesToPlot", + type = "integer", + default = 10, + required = FALSE, + help = "Number of genes to plot" +) +parser$add_argument("--gene", required = FALSE, help = "Gene ID to analyze") +parser$add_argument( + "--sortByQvals", + action = "store_true", + required = FALSE, + help = "Sort genes by Q-val values" +) +parser$add_argument("--countGenes", + action = "store_true", + required = FALSE, + help = "Count genes") +parser$add_argument( + "--asFractionTotal", + action = "store_true", + required = FALSE, + help = "Plot gene expresson as fraction of total" +) +parser$add_argument("--plotGenes", + action = "store_true", + required = FALSE, + help = "Plot genes instead of isoforms") +parser$add_argument( + "--simplifyLocation", + action = "store_true", + required = FALSE, + help = "Simplify localtion" +) +parser$add_argument( + "--removeEmptyConsequences", + action = "store_true", + required = FALSE, + help = "Remove empty consequences" +) +parser$add_argument( + "--analysisOppositeConsequence", + action = "store_true", + required = FALSE, + help = "Analysi opposite consequences" +) +parser$add_argument("--pathToCPATresultFile", + required = FALSE, + help = "Path to CPAT result file") +parser$add_argument("--pathToCPC2resultFile", + required = FALSE, + help = "Path to CPC2 result file") +parser$add_argument("--pathToPFAMresultFile", + required = FALSE, + help = "Path to PFAM result file") +parser$add_argument("--pathToNetSurfP2resultFile", + required = FALSE, + help = "Path to NetSurfP2 result file") +parser$add_argument("--pathToSignalPresultFile", + required = FALSE, + help = "Path to signalP result file") +parser$add_argument("--pathToIUPred2AresultFile", + required = FALSE, + help = "Path to IUPred2A result file") +parser$add_argument("--codingCutoff", + required = FALSE, + type = "numeric", + help = "Codding cutoff") +parser$add_argument( + "--removeNoncodingORFs", + action = "store_true", + required = FALSE, + help = "Remove non-coding ORFs" +) +parser$add_argument( + "--minSignalPeptideProbability", + required = FALSE, + type = "numeric", + help = "Minimul signal peptide probability" +) +parser$add_argument( + "--smoothingWindowSize", + type = "integer", + required = FALSE, + help = "Smoothing windows size" +) +parser$add_argument( + "--probabilityCutoff", + required = FALSE, + type = "double", + help = "Probability cutoff" +) +parser$add_argument("--minIdrSize", + required = FALSE, + type = "integer", + help = "Min Idr size") +parser$add_argument( + "--annotateBindingSites", + action = "store_true", + required = FALSE, + help = "Annotate binding sites" +) +parser$add_argument( + "--minIdrBindingSize", + required = FALSE, + type = "integer", + help = "Minimun Idr binding size" +) +parser$add_argument( + "--minIdrBindingOverlapFrac", + required = FALSE, + type = "numeric", + help = "" +) +parser$add_argument("--ntCutoff", + required = FALSE, + type = "integer", + help = "Nucleotide cutoff") +parser$add_argument("--ntFracCutoff", + required = FALSE, + type = "numeric", + help = "Nucleotide fraction cutoff") +parser$add_argument( + "--ntJCsimCutoff", + required = FALSE, + type = "numeric", + help = "Nucleotide Jaccard simmilarity cutoff" +) +parser$add_argument("--AaCutoff", + required = FALSE, + type = "integer", + help = "Aminoacid cutoff") +parser$add_argument("--AaFracCutoff", + required = FALSE, + type = "numeric", + help = "Aminoacid fraction cutoff") +parser$add_argument( + "--AaJCsimCutoff", + required = FALSE, + type = "numeric", + help = "Aminoacid Jaccard similarity cutoff" +) +parser$add_argument( + "--removeNonConseqSwitches", + action = "store_true", + required = FALSE, + help = "Remove switches without consequences" +) +parser$add_argument( + "--rescaleTranscripts", + action = "store_true", + required = FALSE, + help = "Rescale transcripts" +) +parser$add_argument( + "--reverseMinus", + action = "store_true", + required = FALSE, + help = "Reverse minus" +) +parser$add_argument( + "--addErrorbars", + action = "store_true", + required = FALSE, + help = "Add error bars" +) + + +args <- parser$parse_args() + +# Data import +################### + +if (args$modeSelector == "data_import") { + + quantificationData <- importIsoformExpression( + parentDir = args$parentDir, + addIsofomIdAsColumn = TRUE, + readLength = args$readLength + ) + + ### Make design matrix + myDesign <- data.frame( + sampleID = colnames(quantificationData$abundance)[-1], + condition = gsub( + "[[:digit:]]+", + "", + colnames(quantificationData$abundance)[-1] + ) + ) + + if (args$toolSource == "stringtie") { + SwitchList <- importRdata( + isoformCountMatrix = quantificationData$counts, + isoformRepExpression = quantificationData$abundance, + designMatrix = myDesign, + isoformExonAnnoation = args$annotation, + isoformNtFasta = args$transcriptome, + showProgress = TRUE, + fixStringTieAnnotationProblem = args$fixStringTieAnnotationProblem + ) + } else { + SwitchList <- importRdata( + isoformCountMatrix = quantificationData$counts, + isoformRepExpression = quantificationData$abundance, + designMatrix = myDesign, + isoformExonAnnoation = args$annotation, + isoformNtFasta = args$transcriptome, + showProgress = TRUE + ) + } + + + geneCountMatrix <- extractGeneExpression( + SwitchList, + extractCounts = TRUE, + addGeneNames = FALSE, + addIdsAsColumns = FALSE + ) + + if (args$countFiles == "collection") { + + expressionDF <- data.frame(geneCountMatrix) + + myDesign$condition[length(myDesign$condition)] + + dataframe_factor1 <- expressionDF %>% select(matches(myDesign$condition[1])) + dataframe_factor2 <- expressionDF %>% select(matches(myDesign$condition[length(myDesign$condition)])) + + + lf1 <- as.list(as.data.frame(dataframe_factor1)) + sampleNames1 <- colnames(as.data.frame(dataframe_factor1)) + + lf2 <- as.list(as.data.frame(dataframe_factor2)) + sampleNames2 <- colnames(as.data.frame(dataframe_factor2)) + + geneNames <- row.names(as.data.frame(expressionDF)) + + + for (index in seq_along(lf1)) { + tabular_expression <- data.frame(geneNames, lf1[index]) + colnames(tabular_expression) <- + c("Geneid", sampleNames1[index]) + filename <- + paste(sampleNames1[index], "dataset.tabular", sep = "_") + output_path <- paste("./count_files/factor1/", filename, sep = "") + write.table( + tabular_expression, + output_path, + sep = "\t", + row.names = FALSE, + quote = FALSE + ) + } + for (index in seq_along(lf2)) { + tabular_expression <- data.frame(geneNames, lf2[index]) + colnames(tabular_expression) <- + c("Geneid", sampleNames2[index]) + filename <- + paste(sampleNames2[index], "dataset.tabular", sep = "_") + output_path <- paste("./count_files/factor2/", filename, sep = "") + write.table( + tabular_expression, + output_path, + sep = "\t", + row.names = FALSE, + quote = FALSE + ) + } + } else if (args$countFiles == "matrix") { + expressionDF <- data.frame(geneCountMatrix) + geneNames <- row.names(expressionDF) + + expressionDF <- cbind(geneNames, expressionDF) + write.table( + as.data.frame(expressionDF), + "./count_files/matrix.tabular", + sep = "\t", + row.names = FALSE, + quote = FALSE + ) + write.table( + as.data.frame(myDesign), + "./count_files/samples.tabular", + sep = "\t", + row.names = FALSE, + quote = FALSE + ) + } + + save(SwitchList, file = "SwitchList.Rda") + +} + +if (args$modeSelector == "first_step") { + + # First part of the analysis + ############################# + + load(file = args$rObject) + + ### Filter + SwitchList <- preFilter( + SwitchList, + IFcutoff = args$IFcutoff, + geneExpressionCutoff = args$geneExpressionCutoff, + isoformExpressionCutoff = args$isoformExpressionCutoff, + removeSingleIsoformGenes = args$removeSingleIsformGenes, + onlySigIsoforms = args$onlySigIsoforms, + keepIsoformInAllConditions = args$keepIsoformInAllConditions, + alpha = args$alpha, + dIFcutoff = args$dIFcutoff, + ) + + ### Test for isoform switches + SwitchList <- isoformSwitchTestDEXSeq( + SwitchList, + alpha = args$alpha, + dIFcutoff = args$dIFcutoff, + correctForConfoundingFactors = args$correctForConfoundingFactors, + overwriteIFvalues = args$overwriteIFvalues, + reduceToSwitchingGenes = args$reduceToSwitchingGenes, + reduceFurtherToGenesWithConsequencePotential = args$reduceFurtherToGenesWithConsequencePotential, + onlySigIsoforms = args$onlySigIsoforms, + keepIsoformInAllConditions = args$keepIsoformInAllConditions2, + showProgress = TRUE, + ) + + SwitchList <- analyzeNovelIsoformORF( + SwitchList, + analysisAllIsoformsWithoutORF = TRUE, + minORFlength = args$minORFlength, + orfMethod = args$orfMethod, + PTCDistance = args$PTCDistance, + startCodons = "ATG", + stopCodons = c("TAA", "TAG", "TGA"), + showProgress = TRUE, + ) + + ### Extract Sequences + SwitchList <- extractSequence( + SwitchList, + onlySwitchingGenes = args$onlySwitchingGenes, + alpha = args$alpha, + dIFcutoff = args$dIFcutoff, + extractNTseq = TRUE, + extractAAseq = TRUE, + removeShortAAseq = args$removeShortAAseq, + removeLongAAseq = args$removeLongAAseq, + removeORFwithStop = args$removeORFwithStop, + addToSwitchAnalyzeRlist = TRUE, + writeToFile = TRUE, + pathToOutput = getwd(), + outputPrefix = "isoformSwitchAnalyzeR_isoform", + forceReExtraction = FALSE, + quiet = FALSE + ) + + ### Summary + switchSummary <- extractSwitchSummary( + SwitchList, + filterForConsequences = args$filterForConsequences, + alpha = args$alpha, + dIFcutoff = args$dIFcutoff, + onlySigIsoforms = args$onlySigIsoforms, + ) + + save(SwitchList, file = "SwitchList.Rda") + write.table( + switchSummary, + file = "switchSummary.tsv", + quote = FALSE, + sep = "\t", + col.names = TRUE, + row.names = FALSE + ) + +} + +if (args$modeSelector == "second_step") { + + # Second part of the analysis + ############################# + + load(file = args$rObject) + + ### Add annotation + if (!is.null(args$pathToCPATresultFile)) { + SwitchList <- analyzeCPAT( + SwitchList, + pathToCPATresultFile = args$pathToCPATresultFile, + codingCutoff = args$codingCutoff, + removeNoncodinORFs = args$removeNoncodingORFs + ) + } + + if (!is.null(args$pathToCPC2resultFile)) { + SwitchList <- analyzeCPC2( + SwitchList, + pathToCPC2resultFile = args$pathToCPC2resultFile, + removeNoncodinORFs = args$removeNoncodingORFs + ) + } + + if (!is.null(args$pathToPFAMresultFile)) { + pfamFiles <- list.files(path = args$pathToPFAMresultFile, + full.names = TRUE) + + SwitchList <- analyzePFAM(SwitchList, + pathToPFAMresultFile = pfamFiles, + showProgress = FALSE) + } + + if (!is.null(args$pathToNetSurfP2resultFile)) { + netsurfFiles <- list.files(path = args$pathToNetSurfP2resultFile, + full.names = TRUE) + + SwitchList <- analyzeNetSurfP2( + SwitchList, + pathToNetSurfP2resultFile = netsurfFiles, + smoothingWindowSize = args$smoothingWindowSize, + probabilityCutoff = args$probabilityCutoff, + minIdrSize = args$minIdrSize, + showProgress = TRUE + ) + } + + if (!is.null(args$pathToIUPred2AresultFile)) { + SwitchList <- analyzeIUPred2A( + SwitchList, + pathToIUPred2AresultFile = args$pathToIUPred2AresultFile, + smoothingWindowSize = args$smoothingWindowSize, + probabilityCutoff = args$probabilityCutoff, + minIdrSize = args$minIdrSize, + annotateBindingSites = args$annotateBindingSites, + minIdrBindingSize = args$minIdrBindingSize, + minIdrBindingOverlapFrac = args$minIdrBindingOverlapFrac, + showProgress = TRUE, + quiet = FALSE + ) + } + + if (!is.null(args$pathToSignalPresultFile)) { + signalpFiles <- list.files(path = args$pathToSignalPresultFile, + full.names = TRUE) + + SwitchList <- analyzeSignalP( + SwitchList, + pathToSignalPresultFile = signalpFiles, + minSignalPeptideProbability = args$minSignalPeptideProbability + ) + } + + SwitchList <- analyzeAlternativeSplicing( + SwitchList, + onlySwitchingGenes = args$onlySwitchingGenes, + alpha = args$alpha, + dIFcutoff = args$dIFcutoff, + showProgress = TRUE + ) + + SwitchList <- analyzeIntronRetention( + SwitchList, + onlySwitchingGenes = args$onlySwitchingGenes, + alpha = args$alpha, + dIFcutoff = args$dIFcutoff, + showProgress = TRUE + ) + + consequences <- c( + "intron_retention", + "NMD_status", + "isoform_seq_similarity", + "ORF_genomic", + "tss", + "tts" + ) + + if (!is.null(args$pathToCPATresultFile) || + !is.null(args$pathToCPC2resultFile)) { + updatedConsequences <- c(consequences, "coding_potential") + consequences <- updatedConsequences + } + + if (!is.null(args$pathToPFAMresultFile)) { + updatedConsequences <- c(consequences, "domains_identified") + consequences <- updatedConsequences + } + + if (!is.null(args$pathToSignalPresultFile)) { + updatedConsequences <- c(consequences, "signal_peptide_identified") + consequences <- updatedConsequences + } + + if (!is.null(args$pathToNetSurfP2resultFile) || + !is.null(args$pathToIUPred2AresultFile)) { + updatedConsequences <- c(consequences, "IDR_identified", "IDR_type") + consequences <- updatedConsequences + } + + SwitchList <- analyzeSwitchConsequences( + SwitchList, + consequencesToAnalyze = consequences, + alpha = args$alpha, + dIFcutoff = args$dIFcutoff, + onlySigIsoforms = args$onlySigIsoforms, + ntCutoff = args$ntCutoff, + ntJCsimCutoff = args$ntJCsimCutoff, + AaCutoff = args$AaCutoff, + AaFracCutoff = args$AaFracCutoff, + AaJCsimCutoff = args$AaJCsimCutoff, + removeNonConseqSwitches = args$removeNonConseqSwitches, + showProgress = TRUE + ) + + + ### Visual analysis + # Top genes + + if (args$analysisMode == "single") { + + outputFile <- file.path(getwd(), "single_gene.pdf") + + pdf( + file = outputFile, + onefile = FALSE, + height = 6, + width = 9 + ) + + switchPlot( + SwitchList, + gene = args$gene, + condition1 = myDesign$condition[1], + condition2 = myDesign$condition[length(myDesign$condition)], + IFcutoff = args$IFcutoff, + dIFcutoff = args$dIFcutoff, + rescaleTranscripts = args$rescaleTranscripts, + reverseMinus = args$reverseMinus, + addErrorbars = args$addErrorbars, + logYaxis = FALSE, + localTheme = theme_bw(base_size = 8) + ) + dev.off() + + } else { + mostSwitchingGene <- + extractTopSwitches( + SwitchList, + n = Inf, + filterForConsequences = args$filterForConsequences, + extractGenes = TRUE, + alpha = args$alpha, + dIFcutoff = args$dIFcutoff, + inEachComparison = FALSE, + sortByQvals = args$sortByQvals + ) + + write.table( + mostSwitchingGene, + file = "mostSwitchingGene.tsv", + quote = FALSE, + sep = "\t", + col.names = TRUE, + row.names = FALSE + ) + + + switchPlotTopSwitches( + SwitchList, + alpha = args$alpha, + dIFcutoff = args$dIFcutoff, + onlySigIsoforms = args$onlySigIsoforms, + n = args$genesToPlot, + sortByQvals = args$sortByQvals, + pathToOutput = getwd(), + fileType = "pdf" + ) + + outputFile <- + file.path(getwd(), "extractConsequencesSummary.pdf") + + pdf( + file = outputFile, + onefile = FALSE, + height = 6, + width = 9 + ) + + consequenceSummary <- extractConsequenceSummary( + SwitchList, + consequencesToAnalyze = "all", + includeCombined = FALSE, + asFractionTotal = args$asFractionTotal, + alpha = args$alpha, + dIFcutoff = args$dIFcutoff, + plot = TRUE, + plotGenes = args$plotGenes, + simplifyLocation = args$simplifyLocation, + removeEmptyConsequences = args$removeEmptyConsequences, + returnResult = TRUE, + localTheme = theme_bw() + ) + dev.off() + + write.table( + consequenceSummary, + file = "consequencesSummary.tsv", + quote = FALSE, + sep = "\t", + col.names = TRUE, + row.names = FALSE + ) + + + outputFile <- file.path(getwd(), "consequencesEnrichment.pdf") + pdf( + file = outputFile, + onefile = FALSE, + height = 6, + width = 9 + ) + consequenceEnrichment <- extractConsequenceEnrichment( + SwitchList, + consequencesToAnalyze = "all", + alpha = args$alpha, + dIFcutoff = args$dIFcutoff, + countGenes = args$countGenes, + analysisOppositeConsequence = args$analysisOppositeConsequence, + plot = TRUE, + localTheme = theme_bw(base_size = 12), + minEventsForPlotting = 10, + returnResult = TRUE + ) + dev.off() + + write.table( + consequenceEnrichment, + file = "consequencesEnrichment.tsv", + quote = FALSE, + sep = "\t", + col.names = TRUE, + row.names = FALSE + ) + + + outputFile <- file.path(getwd(), "splicingEnrichment.pdf") + pdf( + file = outputFile, + onefile = FALSE, + height = 6, + width = 9 + ) + splicingEnrichment <- extractSplicingEnrichment( + SwitchList, + splicingToAnalyze = "all", + alpha = args$alpha, + dIFcutoff = args$dIFcutoff, + onlySigIsoforms = args$onlySigIsoforms, + countGenes = args$countGenes, + plot = TRUE, + minEventsForPlotting = 10, + returnResult = TRUE + ) + dev.off() + + write.table( + splicingEnrichment, + file = "splicingEnrichment.tsv", + quote = FALSE, + sep = "\t", + col.names = TRUE, + row.names = FALSE + ) + + + outputFile <- file.path(getwd(), "splicingSummary.pdf") + pdf( + file = outputFile, + onefile = FALSE, + height = 6, + width = 9 + ) + splicingSummary <- extractSplicingSummary( + SwitchList, + splicingToAnalyze = "all", + asFractionTotal = args$asFractionTotal, + alpha = args$alpha, + dIFcutoff = args$dIFcutoff, + onlySigIsoforms = args$onlySigIsoforms, + plot = TRUE, + plotGenes = args$plotGenes, + localTheme = theme_bw(), + returnResult = TRUE + ) + dev.off() + + write.table( + splicingSummary, + file = "splicingSummary.tsv", + quote = FALSE, + sep = "\t", + col.names = TRUE, + row.names = FALSE + ) + + + ### Volcano like plot: + outputFile <- file.path(getwd(), "volcanoPlot.pdf") + pdf( + file = outputFile, + onefile = FALSE, + height = 6, + width = 9 + ) + ggplot(data = SwitchList$isoformFeatures, aes(x = dIF, y = -log10(isoform_switch_q_value))) + + geom_point(aes(color = abs(dIF) > 0.1 & + isoform_switch_q_value < 0.05), # default cutoff + size = 1) + + geom_hline(yintercept = -log10(0.05), linetype = "dashed") + # default cutoff + geom_vline(xintercept = c(-0.1, 0.1), linetype = "dashed") + # default cutoff + facet_wrap(~ condition_2) + + scale_color_manual("Signficant\nIsoform Switch", values = c("black", "red")) + + labs(x = "dIF", y = "-Log10 ( Isoform Switch Q Value )") + + theme_bw() + dev.off() + + + ### Switch vs Gene changes: + outputFile <- file.path(getwd(), "switchGene.pdf") + pdf( + file = outputFile, + onefile = FALSE, + height = 6, + width = 9 + ) + ggplot(data = SwitchList$isoformFeatures, + aes(x = gene_log2_fold_change, y = dIF)) + + geom_point(aes(color = abs(dIF) > 0.1 & + isoform_switch_q_value < 0.05), + size = 1) + + facet_wrap(~ condition_2) + + geom_hline(yintercept = 0, linetype = "dashed") + + geom_vline(xintercept = 0, linetype = "dashed") + + scale_color_manual("Signficant\nIsoform Switch", values = c("black", "red")) + + labs(x = "Gene log2 fold change", y = "dIF") + + theme_bw() + dev.off() + + outputFile <- file.path(getwd(), "splicingGenomewide.pdf") + pdf( + file = outputFile, + onefile = FALSE, + height = 6, + width = 9 + ) + splicingGenomeWide <- extractSplicingGenomeWide( + SwitchList, + featureToExtract = "all", + splicingToAnalyze = c("A3", "MES", "ATSS"), + plot = TRUE, + returnResult = TRUE + ) + dev.off() + } + save(SwitchList, file = "SwitchList.Rda") + +}