R/rain_functions.R

Defines functions RainAnalysis RainSignificantPlot

Documented in RainAnalysis RainSignificantPlot

#' RainAnalysis :
#' @description Carries out RAIN analysis on a transcriptomics dataset
#' @param dataset A transcriptomics dataset. First columns should be gene names.
#'  All other columns should be expression levels.
#' @param period The period of rhythms of interest. Defaults to the circadian
#'  period.
#' @return A dataframe object detailing the result of the rain analysis.
#' @examples
#' results <- RainAnalysis(Laurasmappings, period = 24)
#' @export

RainAnalysis <- function(dataset, period) {
    dataset <- CircadianTools::GeneClean(dataset)
    timevector <- CircadianTools::MakeTimevector(dataset)
    measure <- as.numeric(table(timevector))
    genenames <- dataset[1]
    dataset <- dataset[-1]
    deltat <- unique(timevector)[2] - unique(timevector)[1]
    results <- rain::rain(t(dataset), deltat = deltat, period = period,
                          measure.sequence = measure)
    results <- cbind(genenames, results)
    return(results)
}


#' RainSignificantPlot :
#' @description Prints or saves plots of the genes found to be most significant
#' by \link{RainAnalysis}
#'
#' @param results A dataframe generated by \code{RainAnalysis}
#' @param dataset A transcriptomics dataset which was used with
#'  \link{RainAnalysis} to generate the results dataframe. First columns should
#'  be gene names. All other columns should be expression levels.
#' @param number The number of most significant genes printed or saved
#' @param save Logical. If TRUE, saves plots to working directory.
#'  Defaults to FALSE.
#' @param print Logical. If TRUE renders significant genes in the plot viewer.
#'  Defaults to TRUE
#' @return Prints or saves ggplot2 object(s).
#' @examples
#' results <- RainAnalysis(Laurasmappings, period = 24)
#' RainSignificantPlot(results,Laurasmappings, save=TRUE, number=15)
#'
#' @export
RainSignificantPlot <- function(results, dataset, number = 10,
                                print = TRUE, save = FALSE) {
    # Order by most significant p-value
    results <- results[order(results$pVal), ]

    for (i in 1:number) {
        p <- CircadianTools::BasicPlot(as.character(results[i, 1]), dataset)
        p <- p + ggplot2::ggtitle(paste("Gene = ",
                                        as.character(results[i, 1]),
                                        " P-Value = ",
                                        as.character(results[i,2])))

        if (print == TRUE) {
            print(p)
        }

        if (save == TRUE) {
            ggplot2::ggsave(paste("rank=", i, "RAIN_",
                                  as.character(results[i, 1]),
                                  ".png")
                            , p, width = 10,
                height = 4.5, units = "in")
        }

    }
}
nathansam/CircadianTools documentation built on Dec. 26, 2019, 11:30 a.m.