R/UpdateFeatures.R

Defines functions UpdateFeatures

Documented in UpdateFeatures

#' @title Update all features in a specified folder
#' @description Update all features in a specified folder. Save features in subfolder "Features". Backup old features if desired.
#' @param Path2ReadFiles A path to the location of the read files
#' @param savePath Path where features should be saved to (default: Path2ReadFiles/Features)
#' @param Cores Multicore functionality for linux systems.
#' @param Backup Do you want to backup old features
#' @param AAindex_Selection Parameter for Features
#' @param pattern File extension of read files. Used as regex filter (default "fasta$|mason$")
#' @param verbose Write a logfile ("FeatureCreation.log") and verbose output
#' @param ... Parameters passed to function CreateFeaturesFromReads
#' @return Returns TRUE if completed
#' @author Carlus Deneke
#' @seealso Wraps \code{\link{CreateFeaturesFromReads}}
#' @importFrom foreach %dopar%
#' @export
UpdateFeatures <- function(Path2ReadFiles, savePath = file.path(Path2ReadFiles,"Features"), Cores = 1, Backup = F, pattern = "fasta$|mason$", verbose = T,...){

  require(foreach)
  require(Biostrings)

  if(Cores > 1) {
    #require(doParallel)
    doParallel::registerDoParallel(cores=Cores)
  }

  if(verbose == T){
    print(paste("A log-file is recorded under",file.path(Path2ReadFiles,"FeatureCreation.log") ))
    con = file(file.path(Path2ReadFiles,"FeatureCreation.log"), open = "a")
    sink(file=con, append=T, split=T)
    print(paste("New run for folder",Path2ReadFiles,"on",date() ))
  }

  if(verbose == T) StartTime <- proc.time()[3]

  ReadFiles <- list.files(Path2ReadFiles, pattern = pattern, full.names = T)

  # loop over all read files
  FeatureCheck <- foreach::foreach(i = 1: length(ReadFiles)) %dopar% {

    CurrentReadFile <- ReadFiles[i]
    print(paste("Creating features for file",CurrentReadFile,":",i))

    # Load data
    ReadData <-  Biostrings::readDNAStringSet(CurrentReadFile)

    # Obtain features
    Features <- CreateFeaturesFromReads (Reads = ReadData, ...)

    # check feature qualitiy
    Check <- CheckFeatures(Features)
    if(!Check) {warning(paste("Feature check negative for file", CurrentReadFile)); return(0)}

    # Backup Features
    SaveFeatureFile(Filename=CurrentReadFile, Features=Features, savePath = savePath, Backup = Backup)

    # Write Log
    if(verbose == T) print(paste("New feature set created for", CurrentReadFile,"on",date() ))
    if(verbose == T) print(paste("FeatureTable has dim",nrow(Features),",",ncol(Features),"and contains groups:",paste(attr(Features,"FeatureGroups"),collapse = ",") ))
    if(verbose == T) print(paste("Feature table contains the following features:",paste(colnames(Features), collapse = ",") ))
    if(verbose == T) if(Backup) print(paste("Backup of old feature version stored in subfolder Backup"))
    if(verbose == T) cat("\n")

    return(T)
  }

  if(verbose == T) EndTime <- proc.time()[3]

  if(verbose == T) print(paste("Feature creation took",EndTime - StartTime) )
  if(verbose == T) cat("#################\n")

  if(verbose == T) sink()
  if(verbose == T) close(con)

  return(T)

} # end function
crarlus/paprbag documentation built on May 14, 2019, 11:31 a.m.