From ea0190b8745aaefe6047ca8f8badd09549426d0b Mon Sep 17 00:00:00 2001 From: Waldir Leoncio Date: Tue, 19 Jul 2022 14:34:08 +0200 Subject: [PATCH] Syntax fixes, added documentation --- DESCRIPTION | 2 +- NAMESPACE | 2 ++ R/greedyMix.R | 1 + R/greedyPopMix.R | 36 +++++++++++++++++++++++++------ R/waitALittle.R | 2 +- man/greedyPopMix.Rd | 25 +++++++++++++++++++++ matlab/independent/greedyPopMix.m | 2 +- 7 files changed, 60 insertions(+), 10 deletions(-) create mode 100644 man/greedyPopMix.Rd diff --git a/DESCRIPTION b/DESCRIPTION index 4a1fd15..0177786 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -36,7 +36,7 @@ Description: Partial R implementation of the BAPS software License: GPL-3 BugReports: https://github.com/ocbe-uio/rBAPS/issues Encoding: UTF-8 -RoxygenNote: 7.1.2 +RoxygenNote: 7.2.0 Suggests: testthat (>= 2.1.0) Imports: diff --git a/NAMESPACE b/NAMESPACE index 3237aff..43dbeb2 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -11,6 +11,7 @@ export(etsiParas) export(fgetl) export(fopen) export(greedyMix) +export(greedyPopMix) export(handleData) export(handlePopData) export(initPopNames) @@ -64,6 +65,7 @@ importFrom(matlab2r,sortrows) importFrom(matlab2r,squeeze) importFrom(matlab2r,strcmp) importFrom(matlab2r,times) +importFrom(matlab2r,uiputfile) importFrom(matlab2r,zeros) importFrom(methods,is) importFrom(stats,runif) diff --git a/R/greedyMix.R b/R/greedyMix.R index 624c529..8b26f28 100644 --- a/R/greedyMix.R +++ b/R/greedyMix.R @@ -46,4 +46,5 @@ greedyMix <- function(data, format, verbose = TRUE) { stop("Format not supported.") } return(out) + # TODO: add handleData(out) or some other post-processing of data } diff --git a/R/greedyPopMix.R b/R/greedyPopMix.R index cb8c660..6b25f9e 100644 --- a/R/greedyPopMix.R +++ b/R/greedyPopMix.R @@ -8,13 +8,31 @@ #' @importFrom vcfR read.vcfR #' @importFrom Rsamtools scanBam #' @importFrom adegenet read.genepop .readExt +#' @importFrom matlab2r uiputfile #' @references Samtools: a suite of programs for interacting #' with high-throughput sequencing data. #' @export greedyPopMix <- function(data, format, partitionCompare = NULL, verbose = TRUE) { # Replacing original file reading code with greedyMix() - greedyMix(data, format, verbose) - # TODO: find out where the elements above come from. Maybe greedyMix should create them? + rawdata <- greedyMix(data, format, verbose) + + # Other function calls to produce necessary objects + data_greedyMix_handle <- handlePopData(rawdata) + data <- data_greedyMix_handle$data + rowsFromInd <- data_greedyMix_handle$rowsFromInd + alleleCodes <- data_greedyMix_handle$alleleCodes + noalle <- data_greedyMix_handle$noalle + adjprior <- data_greedyMix_handle$adjprior + priorTerm <- data_greedyMix_handle$priorTerm + rm(data_greedyMix_handle) + Z_dist <- getPopDistancesByKL(adjprior) + Z_dist$Z -> Z + Z_dist$dist -> dist + rm(Z_dist) + a_data <- data[, 1:(ncol(data) - 1)] + sumcounts_counts_logml <- initialPopCounts(a_data, npops, rows, noalle, adjprior) + sumcounts_counts_logml$logml -> logml + rm(sumcounts_counts_logml) c <- list() c$data <- data c$rows <- rows @@ -34,10 +52,10 @@ greedyPopMix <- function(data, format, partitionCompare = NULL, verbose = TRUE) for (i in 1:npartitions) { # number of unique partition lables npops <- length(unique(partitions[, i])) - partitionInd <- zeros(rows(end), 1) + partitionInd <- zeros(length(rows), 1) partitionSample <- partitions[, i] for (j in 1:nsamplingunits) { - partitionInd[c$rows[j, 1]:c.rows[j, 2]] <- partitionSample[j] + partitionInd[c$rows[j, 1]:c$rows[j, 2]] <- partitionSample[j] } partitionLogml[i] <- initialCounts( partitionInd, data[, 1:(ncol(data) - 1)], npops, c$rows, noalle, @@ -47,17 +65,21 @@ greedyPopMix <- function(data, format, partitionCompare = NULL, verbose = TRUE) # return the logml result partitionCompare$logmls <- partitionLogml } - data = data(:,1:end-1); data <- data[, 1:(ncol(data) - 1)] + logml_npops_partitionSummary <- indMix(c) + logml_npops_partitionSummary$logml -> logml + logml_npops_partitionSummary$npops -> npops + logml_npops_partitionSummary$partitionSummary -> partitionSummary + rm(logml_npops_partitionSummary) changesInLogml <- writeMixtureInfoPop( logml, rows, data, adjprior, priorTerm, - outp, inp, partitionSummary, popnames, fixedK + NULL, NULL, partitionSummary, popnames, fixedK = FALSE ) talle <- questdlg( 'Do you want to save the mixture populations so that you can use them later in admixture analysis?', 'Save results?', c('Yes', 'No'), 'Yes' ) - if (isequal(talle, 'Yes')) { + if (tolower(talle) == 'yes') { waitALittle() filename_pathname <- uiputfile() if (rowsFromInd == 0) { diff --git a/R/waitALittle.R b/R/waitALittle.R index f448afc..ca8e314 100644 --- a/R/waitALittle.R +++ b/R/waitALittle.R @@ -1,4 +1,4 @@ waitALittle <- function() { A <- rand(500) - invisible(gammaln(A)) + invisible(matlab2r::gammaln(A)) } diff --git a/man/greedyPopMix.Rd b/man/greedyPopMix.Rd new file mode 100644 index 0000000..cccc077 --- /dev/null +++ b/man/greedyPopMix.Rd @@ -0,0 +1,25 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/greedyPopMix.R +\name{greedyPopMix} +\alias{greedyPopMix} +\title{Clustering of pop individuals} +\usage{ +greedyPopMix(data, format, partitionCompare = NULL, verbose = TRUE) +} +\arguments{ +\item{data}{data file} + +\item{format}{Data format. Format supported: "FASTA", "VCF" ,"BAM", "GenePop"} + +\item{partitionCompare}{a properly-named list. Proper names include +"partitions"} + +\item{verbose}{if \code{TRUE}, prints extra output information} +} +\description{ +Clustering of pop individuals +} +\references{ +Samtools: a suite of programs for interacting +with high-throughput sequencing data. +} diff --git a/matlab/independent/greedyPopMix.m b/matlab/independent/greedyPopMix.m index b8abe97..02d388a 100644 --- a/matlab/independent/greedyPopMix.m +++ b/matlab/independent/greedyPopMix.m @@ -88,7 +88,7 @@ elseif isequal(input_type,'GenePop-format') end if ~isequal(input_type, 'Preprocessed data') - a_data = data(:,1:end-1); + 2 npops = size(rows,1); PARTITION = 1:npops'; %Jokainen "yksil? eli populaatio on oma ryhmäns?