#' @title ConfigFileGet
#' @name getConfigFile
#' @param root Root path
#' @description QC of all data
#'
#' @import dplyr
#' @import XML
#' @import tidyverse
#' @import SimRAD
#' @import data.table
#' @import phylotools
#' @import biomartr
#' @return configFile
#'
#' @author Alberto Rodriguez-Izquierdo, 2021
getConfigFile <- function(root){
#loginfo('Reading configFile...')
configFile <- readConfigFile(root)
#####-------------------Validations----------------------######
#loginfo('Validating configFile...')
#------------------Validation nodes----------------------#
configFile <- nodesValidation(configFile)
######--------------Validation nodes content --------------######
# error <- FALSE
#Validate generalParameters
###-----------------------Validation data-----------------------###
validateDataPath <- validateCharacter(configFile$data$dataPath)
configFile$data$dataPath <- validateDataPath
validateGenome <- validateCharacter(configFile$data$genome)
configFile$data$genome <- validateGenome
validateEnzymeDB <- validateCharacter(configFile$data$enzyme_db)
configFile$data$enzyme_db <- validateEnzymeDB
###----------------------Validation parameters---------------###
validateTypeAnalysis <- validateCharacter(configFile$parameters$typeAnalysis)
configFile$parameters$typeAnalysis <- validateTypeAnalysis
validateIfRestriction <- validateCharacter(configFile$parameters$ifRestriction)
configFile$parameters$ifRestriction <- validateIfRestriction
validateEnzymeSelection <- validateCharacter(configFile$parameters$combination$enzyme_selection)
validateEnzymeSelection <- unlist(strsplit(validateEnzymeSelection, ','))
configFile$parameters$combination$enzyme_selection <- validateEnzymeSelection
validateUseRepEnzyme <- validateCharacter(configFile$parameters$replicate_enzyme$use_replicate)
configFile$parameters$replicate_enzyme$use_replicate <- validateUseRepEnzyme
validateRepEnzymeSel <- validateCharacter(configFile$parameters$replicate_enzyme$enzyme_selection)
configFile$parameters$replicate_enzyme$enzyme_selection <- validateRepEnzymeSel
validateRepEnzymeNb <- validateNumber(configFile$parameters$replicate_enzyme$nb_repeat)
configFile$parameters$replicate_enzyme$nb_repeat <- validateRepEnzymeNb
validateRandomNb <- validateNumber(configFile$parameters$random_genome_fragmentation$nb_fragments)
configFile$parameters$random_genome_fragmentation$nb_fragments <- validateRandomNb
validateRandomRepe <- validateNumber(configFile$parameters$random_genome_fragmentation$nb_repeat)
configFile$parameters$random_genome_fragmentation$nb_repeat <- validateRandomRepe
validateUseCalculate <- validateCharacter(configFile$parameters$calculatePosition$use_calculate)
configFile$parameters$calculatePosition$use_calculate <- validateUseCalculate
validateAlignmentPath <- validateCharacter(configFile$parameters$calculatePosition$alignment_path)
configFile$parameters$calculatePosition$alignment_path <- validateAlignmentPath
validateGffFile <- validateCharacter(configFile$parameters$calculatePosition$gffFile)
configFile$parameters$calculatePosition$gffFile <- validateGffFile
validateOutputPath <- validateCharacter(configFile$parameters$calculatePosition$outputPath)
configFile$parameters$calculatePosition$outputPath <- validateOutputPath
validateCategory <- validateCharacter(configFile$parameters$calculatePosition$category)
configFile$parameters$calculatePosition$category <- validateCategory
validateMinSize <- validateNumber(configFile$parameters$min.size)
configFile$parameters$min.size <- validateMinSize
validateMaxSize <- validateNumber(configFile$parameters$max.size)
configFile$parameters$max.size <- validateMaxSize
###-----------------------Validate Output--------------------###
validateUseOutput <- validateCharacter(configFile$output$use_output)
configFile$output$use_output <- validateUseOutput
validateOutput <- validateCharacter(configFile$output$outputDir)
configFile$output$outputDir <- validateOutput
return (configFile)
}
#' @title ConfigReading
#' @name readConfigFile
#' @param root working directory
#' @description App to start geoapp
#'
#' @import XML
#' @return configFile
#'
#' @author Alberto Rodriguez-Izquierdo, 2021
readConfigFile <- function(root){
require(XML)
myDirectoryConfigFile <- paste0(root, 'config/')
if (!file.exists(paste0(myDirectoryConfigFile,"configFile.xml"))){
#log_error <- 'File path does not exist! Please review the path'
#logerror(log_error)
#stop(log_error)
}
configFile <- xmlParse(file = paste0(myDirectoryConfigFile,"configFile.xml"))
configFile <- xmlToList(configFile)
# configFile <- data.frame(configFile)
return (configFile)
}
#' @title ConfigValidationsNodes
#' @name nodesValidation
#' @param configFile configFile
#' @return configFile
#'
#' @author Alberto Rodriguez-Izquierdo, 2021
nodesValidation <- function(configFile){
#Building list with principal and secondary nodes for validation
principalNodes <- c('data','parameters','output')
dataNodes <- c('dataPath','genome', 'enzyme_db')
parametersNodes <- c('typeAnalysis',
'ifRestriction',
'combination',
'replicate_enzyme',
'random_genome_fragmentation',
'calculatePosition',
'max.size',
'min.size')
combinationNodes <- c('enzyme_selection')
replicateNodes <- c('enzyme_selection', 'nb_repeat')
randomGenNodes <- c('nb_fragments', 'nb_repeat')
calculatePositionNodes <- c('alignment_path','gffFile','outputPath', 'category')
outputNodes <- c('use_output','outputDir')
#Validation principal nodes
generalParametersNodes <- validateConfigNodes(principalNodes, configFile)
ValDataNodes <- validateConfigNodes(dataNodes, configFile$data)
ValParametersNodes <- validateConfigNodes(parametersNodes, configFile$parameters)
ValCombinationNodes <- validateConfigNodes(combinationNodes, configFile$parameters$combination)
ValReplicateNodes <- validateConfigNodes(replicateNodes, configFile$parameters$replicate_enzyme)
valRandomGenNodes <- validateConfigNodes(randomGenNodes, configFile$parameters$random_genome_fragmentation)
valCalculatePositionNodes <- validateConfigNodes(calculatePositionNodes, configFile$parameters$calculatePosition)
ValOutputNodes <- validateConfigNodes(outputNodes, configFile$output)
return(configFile)
#loginfo('Nodes validation success!')
}
#' @title ConfigValidations
#' @name validateConfigNodes
#' @param configFile configFile
#' @description App to start geoapp
#'
#' @import XML
#' @return configFile
#'
#' @author Alberto RodrÃguez Izquierdo, 2021
validateConfigNodes <- function (nodes, configFile){
if (!is.list(nodes)){
for (x in nodes){
if (!(x %in% names(configFile))){
if (!(x %in% configFile)){
# log_error <- paste0('Node ',x,' does not exist! Please review configFile.xml')
# logerror(log_error)
print(paste0('Warning: Node ', nodes,' does not exist'))
# stop(log_error)
}
}
}
}else{
for (x in names(nodes)){
if (!(x %in% names(configFile))){
# log_error <- paste0('Node ',x,' does not exist! Please review configFile.xml')
# logerror(log_error)
print(paste0('Warning: Node ', nodes,' does not exist'))
# stop(log_error)
}
}
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.