From ba1573ad59e1fa4ec41d552bda29893bbee747af Mon Sep 17 00:00:00 2001 From: Waldir Leoncio Date: Tue, 28 Jul 2020 11:45:28 +0200 Subject: [PATCH] Fixed behavior of testaaGenePopData --- R/greedyMix.R | 4 ++-- R/testaaGenePopData.R | 36 ++++++++++++++++++++---------------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/R/greedyMix.R b/R/greedyMix.R index 0991649..edac561 100644 --- a/R/greedyMix.R +++ b/R/greedyMix.R @@ -147,8 +147,8 @@ greedyMix <- function( # fprintf(1,'Data: %s\n',[pathname filename]); # end - kunnossa <- testaaGenePopData(pathname_filename) - # if (kunnossa == 0) stop("testaaGenePopData returned 0") + kunnossa <- testaaGenePopData(filename_pathname) + if (kunnossa == 0) stop("testaaGenePopData returned 0") # [data,popnames]=lueGenePopData([pathname filename]); # TODO: trans # h0 = findobj('Tag','filename1_text'); diff --git a/R/testaaGenePopData.R b/R/testaaGenePopData.R index 7b3810d..d62bff4 100644 --- a/R/testaaGenePopData.R +++ b/R/testaaGenePopData.R @@ -1,15 +1,17 @@ #' @title Tests GenePop data #' @param tiedostonNimi Filename +#' @return kunnossa (binary "ok" condition value) == 0 if the data is not valid genePop data. Otherwise, kunnossa == 1. +#' @details GenePop data are textfiles that follow the GenePop format. This function checks if such file is properly formatted as GenePop. testaaGenePopData <- function(tiedostonNimi) { # kunnossa == 0, jos data ei ole kelvollinen genePop data. # Muussa tapauksessa kunnossa == 1. kunnossa <- 0 - if (file.exists(paste0(tiedostonNimi, ".rda"))) { - fid <- load(tiedostonNimi) - line1 <- readLines(fid)[1] # ensimmäinen rivi - line2 <- readLines(fid)[2] # toinen rivi - line3 <- readLines(fid)[3] # kolmas + if (file.exists(tiedostonNimi)) { + fid <- readLines(tiedostonNimi) + line1 <- fid[1] # ensimmäinen rivi + line2 <- fid[2] # toinen rivi + line3 <- fid[3] # kolmas } else { fid <- line1 <- line2 <- line3 <- -1 } @@ -21,41 +23,43 @@ testaaGenePopData <- function(tiedostonNimi) { stop('Incorrect file format 1172') } if (testaaPop(line3) == 1) { - # 2 rivi t�ll�in lokusrivi - nloci <- rivinSisaltamienMjonojenLkm(line2) # TODO: translate function - line4 <- readLines(fid)[4] + # 2 rivi t�ll�in lokusrivi (2 rows then locus row) + nloci <- rivinSisaltamienMjonojenLkm(line2) + line4 <- fid[4] if (line4 == -1) stop('Incorrect file format 1180') if (!grepl(',', line4)) { # Rivin nelj?t�ytyy sis�lt�� pilkku. stop('Incorrect file format 1185') } pointer <- 1 - while (line4[pointer] != ',') { # Tiedet��n, ett?pys�htyy + while (substring(line4, pointer, pointer) != ',') { + # Tiedet��n, ett?pys�htyy pointer <- pointer + 1 } - line4 <- line4[(pointer + 1):nchar(line4)] # pilkun j�lkeinen osa + line4 <- substring(line4, pointer + 1) # pilkun j�lkeinen osa (the part after the comma) nloci2 <- rivinSisaltamienMjonojenLkm(line4) if (nloci2 != nloci) stop('Incorrect file format 1195') } else { - line <- readLines(fid)[4] + line <- fid[4] lineNumb <- 4 while (testaaPop(line) != 1 & line != -1) { - line <- readLines(fid)[lineNumb] + line <- fid[lineNumb + 1] lineNumb <- lineNumb + 1 } if (line == -1) stop('Incorrect file format 1206') nloci <- lineNumb - 2 - line4 <- readLines(fid)[4] # Eka rivi pop sanan j�lkeen + line4 <- fid[lineNumb + 1] # Eka rivi pop sanan j�lkeen if (line4 == -1) stop('Incorrect file format 1212') if (!grepl(',', line4)) { - # Rivin t�ytyy sis�lt�� pilkku. + # Rivin t�ytyy sis�lt�� pilkku. (The line must contain a comma) stop('Incorrect file format 1217') } pointer <- 1 - while (line4[pointer] != ',') { # Tiedet��n, ett?pys�htyy + while (substring(line4, pointer, pointer) != ',') { + # Tiedet��n, ett?pys�htyy pointer <- pointer + 1 } - line4 <- line4[(pointer + 1):nchar(line4)] # pilkun j�lkeinen osa + line4 <- substring(line4, pointer + 1) # pilkun j�lkeinen osa (the part after the comma) nloci2 <- rivinSisaltamienMjonojenLkm(line4) if (nloci2 != nloci) stop('Incorrect file format 1228') }