# HG changeset patch # User dfornika # Date 1526509862 14400 # Node ID 4cc93ead2f2dfd0b64b52f67cffc1e3d3ec5e150 # Parent 9f43963bac74d92091967d24efde34ded8b8c466 planemo upload for repository https://github.com/WGS-TB/MentaLiST/tree/master/galaxy commit b4ef7289f70ec76244d7b47e172e52e9980abdd9-dirty diff -r 9f43963bac74 -r 4cc93ead2f2d data_managers/data_manager_conf.xml --- a/data_managers/data_manager_conf.xml Mon May 14 18:35:31 2018 -0400 +++ b/data_managers/data_manager_conf.xml Wed May 16 18:31:02 2018 -0400 @@ -1,6 +1,6 @@ - + @@ -15,7 +15,7 @@ - + @@ -30,7 +30,7 @@ - + @@ -45,7 +45,7 @@ - + diff -r 9f43963bac74 -r 4cc93ead2f2d data_managers/data_manager_mentalist_build_db/data_manager/mentalist_build_db.xml --- a/data_managers/data_manager_mentalist_build_db/data_manager/mentalist_build_db.xml Mon May 14 18:35:31 2018 -0400 +++ b/data_managers/data_manager_mentalist_build_db/data_manager/mentalist_build_db.xml Wed May 16 18:31:02 2018 -0400 @@ -1,7 +1,7 @@ - + - mentalist + mentalist - + - mentalist + mentalist - + - mentalist + mentalist - + - mentalist + mentalist + - mentalist + mentalist MLST call file +#' @param exclude (optional) -> columns to exclude in the MLST call files. +#' @return a MLST call matrix, with samples on the rows and loci on the columns. +mlst_calls = function(call_file, exclude=c()){ + mlst_calls = read.csv(call_file, row.names=1, sep="\t") + # exclude non allele calls: + exclude <- c(exclude, c("ST", "clonal_complex")) + if(any(exclude %in% names(mlst_calls))) { + return(mlst_calls[ , -which(names(mlst_calls) %in% exclude)]) + } else { + return(mlst_calls) + } +} + +#' ham_distance compute the hamming distance matrix (row by row) +#' @param X matrix +#' @return dist_matrix the distance matrix of the X's rows with the haming distance +ham_distance = function(X){ + X[is.na(X)] <- -1 + X <- as.matrix(X) + characs = unique(as.vector(X)) + U = X == characs[1] + Cumu = U %*% t(U) + for (chara in characs[-1]){ + U = X == chara + Cumu = Cumu + U %*% t(U) + } + dist = ncol(X) - Cumu + return(dist) +} + +usage <- function() { + cat("usage: mentalist_distance \n") +} + + +main <- function(args) { + if(is.na(args[1])){ + usage() + return() + } + mlst <- mlst_calls(args[1]) + d_matrix <- ham_distance(mlst) + cat(dim(d_matrix)[1], '\n', sep='') + write.table(d_matrix, quote=FALSE, col.names=FALSE) +} + +if(!interactive()) { + main(args) +} diff -r 9f43963bac74 -r 4cc93ead2f2d tools/mentalist_distance/mentalist_distance.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/mentalist_distance/mentalist_distance.xml Wed May 16 18:31:02 2018 -0400 @@ -0,0 +1,32 @@ + + '${output}' + ]]> + + + + + + + + + + + + + + + + + + + + + + ]]> + + +