draft final form of current package
[epclust.git] / epclust / R / clustering.R
index 4519f44..a4c273a 100644 (file)
@@ -67,8 +67,8 @@ clusteringTask1 = function(
 
 #' @rdname clustering
 #' @export
-clusteringTask2 = function(medoids, K2,
-       getRefSeries, nb_ref_curves, nb_series_per_chunk, ncores_clust=1,verbose=FALSE,parll=TRUE)
+clusteringTask2 = function(medoids, K2, getRefSeries, nb_ref_curves,
+       nb_series_per_chunk, nbytes,endian,ncores_clust=1,verbose=FALSE,parll=TRUE)
 {
        if (verbose)
                cat(paste("*** Clustering task 2 on ",nrow(medoids)," lines\n", sep=""))
@@ -77,7 +77,7 @@ clusteringTask2 = function(medoids, K2,
                return (medoids)
        synchrones = computeSynchrones(medoids,
                getRefSeries, nb_ref_curves, nb_series_per_chunk, ncores_clust, verbose, parll)
-       distances = computeWerDists(synchrones, ncores_clust, verbose, parll)
+       distances = computeWerDists(synchrones, nbytes, endian, ncores_clust, verbose, parll)
        medoids[ computeClusters2(distances,K2,verbose), ]
 }
 
@@ -203,7 +203,7 @@ computeSynchrones = function(medoids, getRefSeries,
 #' @return A matrix of size K1 x K1
 #'
 #' @export
-computeWerDists = function(synchrones, ncores_clust=1,verbose=FALSE,parll=TRUE)
+computeWerDists = function(synchrones, nbytes,endian,ncores_clust=1,verbose=FALSE,parll=TRUE)
 {
        if (verbose)
                cat(paste("--- Compute WER dists\n", sep=""))
@@ -218,8 +218,8 @@ computeWerDists = function(synchrones, ncores_clust=1,verbose=FALSE,parll=TRUE)
        #NOTE: default scalevector == 2^(0:(noctave * nvoice) / nvoice) * s0 (?)
        scalevector  <- 2^(4:(noctave * nvoice) / nvoice + 1)
        #condition: ( log2(s0*w0/(2*pi)) - 1 ) * nvoice + 1.5 >= 1
-       s0=2
-       w0=2*pi
+       s0 = 2
+       w0 = 2*pi
        scaled=FALSE
        s0log = as.integer( (log2( s0*w0/(2*pi) ) - 1) * nvoice + 1.5 )
        totnoct = noctave + as.integer(s0log/nvoice) + 1
@@ -237,7 +237,7 @@ computeWerDists = function(synchrones, ncores_clust=1,verbose=FALSE,parll=TRUE)
                V = V[-1]
                pairs = c(pairs, lapply(V, function(v) c(i,v)))
        }
-       
+
        computeSaveCWT = function(index)
        {
                ts <- scale(ts(synchrones[index,]), center=TRUE, scale=scaled)
@@ -249,7 +249,7 @@ computeWerDists = function(synchrones, ncores_clust=1,verbose=FALSE,parll=TRUE)
                res <- sqres / max(Mod(sqres))
                #TODO: serializer les CWT, les récupérer via getDataInFile ;
                #--> OK, faut juste stocker comme séries simples de taille delta*ncol (53*17519)
-               binarize(res, cwt_file, 100, ",", nbytes, endian)
+               binarize(c(as.double(Re(res)),as.double(Im(res))), cwt_file, ncol(res), ",", nbytes, endian)
        }
 
        if (parll)
@@ -271,6 +271,8 @@ computeWerDists = function(synchrones, ncores_clust=1,verbose=FALSE,parll=TRUE)
        getCWT = function(index)
        {
                #from cwt_file ...
+               res <- getDataInFile(c(2*index-1,2*index), cwt_file, nbytes, endian)
+       ###############TODO:    
        }
 
        # Distance between rows i and j