toward better ID+coeffs management
[epclust.git] / epclust / R / main.R
index f45c945..f5ad81a 100644 (file)
@@ -7,8 +7,8 @@
 #' \itemize{
 #'   \item data.frame: each line contains its ID in the first cell, and all values after
 #'   \item connection: any R connection object (e.g. a file) providing lines as described above
-#'   \item function: a custom way to retrieve the curves; it has two arguments: the start index
-#'     (start) and number of curves (n); see example in package vignette.
+#'   \item function: a custom way to retrieve the curves; it has two arguments: the ranks to be
+#'     retrieved, and the IDs - at least one of them must be present (priority: ranks).
 #' }
 #' @param K1 Number of super-consumers to be found after stage 1 (K1 << N)
 #' @param K2 Number of clusters to be found after stage 2 (K2 << K1)
@@ -58,7 +58,7 @@ epclust = function(data, K1, K2, ntasks=1, nb_series_per_chunk=50*K1, min_series
        }
        K1 = toInteger(K1, function(x) x>=2)
        K2 = toInteger(K2, function(x) x>=2)
-       ntasks = toInteger(ntasks)
+       ntasks = toInteger(ntasks, function(x) x>=1)
        nb_series_per_chunk = toInteger(nb_series_per_chunk, function(x) x>=K1)
        min_series_per_chunk = toInteger(K1, function(x) x>=K1 && x<=nb_series_per_chunk)
        ncores_tasks = toInteger(ncores_tasks, function(x) x>=1)
@@ -68,6 +68,7 @@ epclust = function(data, K1, K2, ntasks=1, nb_series_per_chunk=50*K1, min_series
 
        # Serialize all wavelets coefficients (+ IDs) onto a file
        coeffs_file = ".coeffs"
+       ids_files = ".ids"
        index = 1
        nb_curves = 0
        nb_coeffs = NA
@@ -76,8 +77,7 @@ epclust = function(data, K1, K2, ntasks=1, nb_series_per_chunk=50*K1, min_series
                coeffs_chunk = computeCoeffs(data, index, nb_series_per_chunk, wf)
                if (is.null(coeffs_chunk))
                        break
-               serialized_coeffs = serialize(coeffs_chunk)
-               appendBinary(coeffs_file, serialized_coeffs)
+               serialize(coeffs_chunk, coeffs_file, append=TRUE)
                index = index + nb_series_per_chunk
                nb_curves = nb_curves + nrow(coeffs_chunk)
                if (is.na(nb_coeffs))