Switch to side-by-side view

--- a
+++ b/R/DIscBIO-generic-clusteringOrder.R
@@ -0,0 +1,55 @@
+#' @title Pseudo-time ordering based on k-means clusters
+#' @description This function takes the exact output of exprmclust function and
+#'   construct Pseudo-time ordering by mapping all cells onto the path that
+#'   connects cluster centers.
+#' @param object \code{DISCBIO} class object.
+#' @param quiet if `TRUE`, suppresses intermediary output
+#' @param export if `TRUE`, exports order table to csv
+#' @param filename Name of the exported file (if `export=TRUE`)
+#' @importFrom TSCAN TSCANorder
+#' @note This function has been replaced by pseudoTimeOrdering(), but it is
+#'   being kept for legacy purposes. It will, however, be removed from future
+#'   versions of DIscBIO.
+#' @return The DISCBIO-class object input with the kordering slot filled.
+setGeneric("KmeanOrder", function(
+    object, quiet = FALSE, export = FALSE,
+    filename = "Cellular_pseudo-time_ordering_based_on_k-meansc-lusters") {
+  standardGeneric("KmeanOrder")
+})
+
+#' @export
+#' @rdname KmeanOrder
+setMethod(
+  "KmeanOrder",
+  signature = "DISCBIO",
+  definition = function(object, quiet, export, filename) {
+    warning(
+      "KmeanOrder() has been replaced with pseudoTimeOrdering(), ",
+      "which performs pseudo-time ordering for both k-means ",
+      "and model-based clustering. ",
+      "This function is being kept for legacy purposes, ",
+      "but will be removed in future versions of DIscBIO. ",
+      "Please adapt your scripts accordingly."
+    )
+    # Validation
+    if (length(object@kmeans$kpart) == 0) {
+      stop("run Clustexp before KmeanOrder")
+    }
+
+    Obj <- object@fdata
+    Clusters <- object@cpart
+    sampleNames <- colnames(object@fdata)
+    lpsmclust <- Exprmclust(Obj, K = 4, reduce = FALSE, cluster = Clusters)
+    lpsorder <- TSCANorder(lpsmclust)
+    orderID <- lpsorder
+    order <- seq_len(length(lpsorder))
+    orderTable <- data.frame(order, orderID)
+    if (export) write.csv(orderTable, file = paste0(filename, ".csv"))
+    if (!quiet) print(orderTable)
+    FinalOrder <- orderTable[match(sampleNames, orderTable$orderID), ]
+    out_order <- FinalOrder[, 1]
+    names(out_order) <- names(Clusters)
+    object@kordering <- out_order
+    return(object)
+  }
+)